当输入一串字符的时候,发现其中一个字符的格式不适合怎么终止后面的字符继续读入。
这是我本来写的程序:
#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次。
其实你的要求很简单 实现也很简单.........
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+2+3”这种情况的时候,程序能自动不把错误输入的数字放到内存里去..
什么是错误输入的数字?追问
比如说 我要输入"1+2+3" 正确的输入应该是"1 + 2 + 3" 没有加空格之后的就是错误的格式.我想把那段删掉
我理解你的意思是输入一个数组,输出第一个空格前的数。不知道是不是这个意思追问
嗯 差不多,但是有点出入,我在补充下问题.
..能力有限 对不起了
追答1+2+3你是要只取1还是要分别取到1,2,3还是要123作为一个数
追问分开来