这很奇怪。 itoa();
似乎创造了一个无限循环。
for(int i = 0; i < 10; i++)
{
char buffer[1];
itoa(i, buffer, 10);
std::cout << buffer;
}
为什么它会这样做?我尝试过使用与i
不同的变量,没有变量的数值(即itoa(1, buffer, 10);
),它仍然会在无限循环中结束。
我试图谷歌没有太大的成功,我发现了一个关于它的旧邮件here。
我使用Windows XP 32位和Code :: Blocks(使用GCC)作为编译器。
有谁知道什么是错的?提前谢谢。
答案 0 :(得分:5)
itoa
null - 终止它生成的字符串,但是你没有使buffer
足够大以容纳终止NUL字符。尝试:
for (int i = 0; i < 10; i++)
{
char buffer[2];
itoa(i, buffer, 10);
std::cout << buffer;
}
答案 1 :(得分:1)
为什么你在使用一般数字转换例程进行单个数字?
for (int i = 0; i < 10; i++)
std::cout << char('0' + i);
(您需要转换回char
,以便编译器使用<<
的正确重载.C ++标准保证字符常量'0'
到'9'
具有连续数值。)
答案 2 :(得分:0)
你的缓冲区太小 - itoa会写一个以空字符结尾的字符串,所以你的缓冲区至少需要2个字节来保存0-9的值。