我如何推动数字" 125"到char数组?

时间:2014-10-28 00:03:22

标签: c++ memcpy

我想将一些数字推送到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;

这个输出是一些标志,我无法识别..

拜托,你能告诉我,我该怎么办?谢谢!

2 个答案:

答案 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:] 谢谢