c++中怎么停止读入一串字符串

当输入一串字符的时候,发现其中一个字符的格式不适合怎么终止后面的字符继续读入。
这是我本来写的程序:
#include<iostream>
using namespace std;
void main()
{
int i=0,A[20];
cin>>A[i];
while(getchar()!=' ')
{
cout<<"输入错误";
cin>>A[i];
cout<<A[i]<<endl;
}

}

示例:我输入 “1+2+3”(注意没有空格)
程序多次输出“输入错误”.
我知道这是因为程序吧后面的数字读进去的缘故,请教怎么停止读入。
如果没有方法的话,我会自己尝试下把后面的数据无效化。谢谢。
其实是要做一个用命令行模拟计算器的程序,
cin的时候是要空格间开空格和数字的吧,
但是我想做在没有输入空格的情况就是“1+2+3”这种情况的时候,程序能自动不把错误输入的数字放到内存里去, 因为会发生点奇怪的事,比如以上的示例就报错了3次。

首先 getchar()本身就输入了一个字符 包括回车...其次你这样一直在输入a[0]一个字符 ..你的程序这样会每次先在getchar输入一个字符 再在cin输入一个字符 .......不断覆盖

其实你的要求很简单 实现也很简单.........
cin.getline(a,20,' ');
模式 : cin.getline(字符串名,定义长度,终止符);追问

刚补充了下问题,对你的回答思考了下,发现这样貌似能够实现将“1+2+3”这样不带空格的字符串正确放到数组里面去,这样就不需要报错了.
不够还是想要做补充问题里面的那种要求,因为看起来更加工整.

追答

我不是很理解你的目的...........
char j;
while(j!=" ")
{
j=getchar();
a[i++]=j;
}
类似这样?

追问

这样子不行 输入的第一个数字会被用来判断是否等于“ ” 然后就被忽略的掉了不是吗?
我想要输入的第一个数字能够被放进数组里面,
然后接一个空格,
然后判断上一步输入的是否是空格,不是的话重新输入(这里的重新输入指的是重新由a[0]开始)
是的话就在对数组的下一个元素赋值.

追答

while(j!='\n')
{
cin>>a[i];
j=getchar();
if (j!=' ') i==0;
else i++;
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-01-12
能举例说下 你要编的这程序的作用吗?我不太看得懂你的问题-.-
但是我想做在没有输入空格的情况就是“1+2+3”这种情况的时候,程序能自动不把错误输入的数字放到内存里去..
什么是错误输入的数字?追问

比如说 我要输入"1+2+3" 正确的输入应该是"1 + 2 + 3" 没有加空格之后的就是错误的格式.我想把那段删掉

第2个回答  2014-01-11
是不是应该换while(getchar()!=' ')为while(getchar()==' ')。
我理解你的意思是输入一个数组,输出第一个空格前的数。不知道是不是这个意思追问

嗯 差不多,但是有点出入,我在补充下问题.

第3个回答  2014-01-11
乱七八糟,不知所谓追问

..能力有限 对不起了

追答

1+2+3你是要只取1还是要分别取到1,2,3还是要123作为一个数

追问

分开来

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网