我想将一些数字推送到char数组。但这个数字很大,因为exameple让我们拿'125'。 我尝试了3个原因: 1)整数:
char arr[2];
int number = 125;
int *pNumber = &number;
memcpy(arr + 0, pNumber, sizeof(arr));
cout << (int)arr[0] << endl;
,输出是:
125
所以这太棒了!但如果我改变数字大于127,那么结果是坏的。对于128是-128,129是-127 .....怎么可能?有办法解决吗?至于我,char的大小小于128。
2)char数组:
char arr[2];
char *arr2 = new char[3];
arr2[0] = '8';
arr2[1] = '9';
arr2[2] = '\0';
memcpy(arr + 0, (char*)arr2, sizeof(pole));
cout << arr[0] << endl;
然而,这只打印了fisrt符号'8'。我能解决吗?或者这又是坏事?
3)string:
char arr[2];
string s = "125";
string *ps = &s;
memcpy(pole + 0, ps, sizeof(pole));
cout << pole[0] << endl;
这个输出是一些标志,我无法识别..
拜托,你能告诉我,我该怎么办?谢谢!
答案 0 :(得分:0)
很难说,但我认为这就是你要找的东西
char arr[15];
int number = 125;
sprintf( arr, "%d", number );
适用于任意数量高达20亿(2 ^ 31)的数据。
答案 1 :(得分:0)
我拥有它!我想是这样的:
char arr[10];
int number = 125;
int * pNumber = &number;
memcpy(arr + 0, (char*)pNumber, sizeof(int));
char *out = arr + 0;
int *a = ((int*)out);
cout << *a << endl;
现在输出是125:] 谢谢