【发布时间】:2012-06-09 13:16:22
【问题描述】:
我正在制作一个从用户那里获取输入的程序,而每个输入都包含用空格分隔的整数。例如“2 3 4 5”。
我很好地实现了 atoi 函数,但是,每当我尝试在字符串上运行并在空格上“跳过”时,都会出现运行时错误:
for(int i=0, num=INIT; i<4; i++)
{
if(input[i]==' ')
continue;
string tmp;
for(int j=i; input[j]!=' '; j++)
{
//add every char to the temp string
tmp+=input[j];
//means we are at the end of the number. convert to int
if(input[i+1]==' ' || input[i+1]==NULL)
{
num=m_atoi(tmp);
i=j;
}
}
}
在 'if(input[i+1]==' '.....' 行中出现异常。 基本上,我试图只插入“2 2 2 2”。 我意识到,每当我尝试比较字符串中的真实空格和 ' ' 时,都会引发异常。
我尝试与空间的 ASCII 值 32 进行比较,但也失败了。 有什么想法吗?
【问题讨论】:
-
很可能
i+1超过了字符串的长度。您应该使用调试器(或添加打印语句)找出原因。 -
你可以很容易地做到这一点,而且使用字符串流的代码要少得多。
-
当i等于3时访问
input[i+1]肯定会有问题 -
噢,谢谢!!!我意识到当我将 cin 转换为字符串时,它会停止接收空格后的字符......!