gpt4 book ai didi

c++ - char a[0] 使用 itoa() 将整数转换为字符串的目的

转载 作者:行者123 更新时间:2023-11-30 01:39:46 26 4
gpt4 key购买 nike

我有这个代码,

char a[0];
cout << "What is a? " << a << endl;
char *word = itoa(123,a,10);
string yr = string(word);

但我无法理解数组 a[0]。我试图改变它的值,看看是否有任何变化,但它似乎没有任何区别。

例如,即使将 a[0] 更改为 a[1] 或任何其他整数,输出仍然没有区别

char a[1];
cout << "What is a? " << a << endl;
char *word = itoa(123,a,10);
string yr = string(word);

这里的目的是什么?

最佳答案

itoa function is non-standard ,这是对流行签名 itoa(int, char*, int) 的讨论。

第二个参数表示一个缓冲区,表示值的以 null 结尾的字符串被复制到该缓冲区中。它必须为整个字符串提供足够的空间:在您的例子中,即 "123",它需要四个字符。您的代码将 a[] 作为缓冲区传递,但 a[] 的大小不足以容纳整个 "123" 字符串。因此,调用会导致 undefined behavior .

您需要使 a 足够大以适合目标字符串。传递大小为 12 的缓冲区足以容纳 itoa 在 32 位系统上可以生成的最长十进制数(即 -2147483648)。将声明中的 char a[0] 替换为 char a[12]

关于c++ - char a[0] 使用 itoa() 将整数转换为字符串的目的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44945462/

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