第二个 cin.getline() 没有提示输入就直接结束。这是因为 cin.getline() 会把剩余的字符留在队列中,并且设置失效位,并关闭输入。为此,需要清除失效位:if (!cin) { cin.clear();while (cin.get() != '\n') { continue;} }
在VS中上面的方法cin.sync()是无法调用的,因此如果在VS中开发,我们可以自己实现一个清空输入缓冲区的函数,具体实现如下: #include <iostream>#include<windows.h>usingnamespacestd;voidClearBuff(){chartemp;while((temp = getchar()) !='\n');//循环读取残留在输入缓冲区中的字符,判断是否为'\n',由于输...
cin>>x;// 输入 xif(cin.fail()){// 如果 cin.fail() 满足,即 cin 出故障了,// 那么就要清空缓冲区,等待用户重新输入// 当输入流出现问题时,cin 会记仇。即,cin 会记录自己的状态。// 这个状态可以通过 cin.fail() 和 cin.good() 获取。// 如果 cin 状态正常,上述两个操作获得到的值分别为 0...
用_kbhit()(因为是立即返回的,你可能要放到循环里),判断是不是有键按下,然后用_getch()取走。 (3)cin.peek() ==> 输入缓冲区里面有数据的时候,判断结果准确的;输入缓冲区 为空的时候 该函数也会阻塞... 2.2、上面的方式 都不咋地...现在用下面的 这种方式: 每次调用完 cin、getchar、fgetc 等函数后...
cin.clear(); cin.ignore(INT_MAX,'\n'); // 进while 前 清除输入流 while( (c=cin.get()) != '\n') { //保证 while((c=cin.get() ...) 能循环多次,也许你还要清除输入流:cin.clear(); cin.ignore(INT_MAX,'\n');if(isnumber(c))cout<<"you entered a digit\n";...
scanf()返回成功读入的数据个数,比如scanf("%f%s%d",a,s,d);,正确响应这个输入语句后,其返回值是3。对于cin,使用起来更方便,成功读入数据后,cin通过内部转换,其返回值是逻辑值1,即true。int na,nb;char str[80];cin >> na >> nb >> str;用 12 5 ssahd 响应时,整个读入语句返回...
这个IO库只提供文本输入/输出能力——这就是C语言的scanf/printf、c++的cin/cout、python的print、Java...
int m,temp;cin>>m>>temp;cout<<m<<temp;如果你输入Q 9 ,则不会有输出的,因为Q 不是INT 型的,输入出错,cin 标记为bad ,输入终止;int m,temp;cin>>m;if(!cin.good())cin.clear();cout<<m<<temp;同样输入Q 9 ,输出为 9 也就是说只有输入状态为good的时候,cin 才会工作 ...