gpt4 book ai didi

c++ - 将 int 值存储到 char* - C++?

转载 作者:行者123 更新时间:2023-11-28 05:47:22 25 4
gpt4 key购买 nike

我已经分配了一 block 内存作为 (char *),我希望能够在其中存储一个整数。

char * arr = new char[50];
int num = 9;

for(int i = 0; i < sizeof(int); i++)
{
*((int *)arr) = arr[i];
}

memcpy(&arr, &num, sizeof(num));

cout<<"Contents of arr: "<<arr<<endl;

然而,每当我编译时,我似乎都会遇到段错误。我怎样才能解决这个问题?谢谢!

最佳答案

for 循环是不必要的。我不确定它试图完成什么。 memcpy 没问题,除了你正在获取 arr 的地址,它已经是一个指针。这将起作用:

char * arr = new char[50];
int num = 9;

memcpy(arr, &num, sizeof(num));

cout<<"Contents of arr: "<< ((int *)arr) <<endl;

也许您的 for 循环试图这样做:

char * arr = new char[50];
int num = 9;

*((int *)arr) = num;

cout<<"Contents of arr: "<< ((int *)arr) << endl;

那也行。

编辑:数组的内容不能直接打印,至少没有任何意义(并且可能因为没有零终止而崩溃)。假设您希望它看起来像一个整数,我已经编辑了上面的代码。 C++ 纯粹主义者可能会反对使用 C 风格转换而不是 reinterpret_cast<>,但这是一个单独的问题。

关于c++ - 将 int 值存储到 char* - C++?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35962852/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com