#include<iostream>
using namespace std;
int main()
{
int a=0,b=0;
cin >>a; //语句1
cout <<a; //语句2
cin >>b; //语句3
cout <<b; //语句4
return 0;
}
如果输入1,按回车显示1;然后再输入2,按回车显示2,这个正常
但现在问题是,如果是在输入界面,按1,然后按空格,再按2,最后按回车,结果是输出12!
请问这个内部机制是如何实现的?在语句1本来应该只输入一个int型数然后按回车,把a显示出来,但现在我是按了1+空格+2+回车,那么是不是1和2都被储存在了cin的缓冲区?换句话说为什么语句3没有执行(没有让用户输入b的值)?执行完语句2之后,语句3究竟有没有执行?
望大神做详细解释!还有如果我要设置一个报错功能,就是在cin>>a;时,用户只能输入一个int型数,其它所有任何输入都将报错(当然包括输入1+空格+2+回车),改如何实现
语句3执行了,1+空格+2+回车,则1、2两个整数都进入缓冲区,不是12.
你可以输出一个换行就清楚了。
#include<iostream>判断合法性,如下:
#include<iostream>哈哈,这个问题终于搞清楚了。而且我昨晚突发灵感终于想出个简洁的方法,只需几个语句就可以判断是不是整数
bool Is_Input_Int( )
{
int a;
cin.clear();
cin.sync();
cin >>a;
if( !cin||getchar()!='\n' ) return false;
else return true;
}
这个函数可以检出一切无厘头输入,包括12abc,1a2bc,0.123,1+空格+2+回车 等等
不过还是得谢谢你的代码哈!
c++用cin输入数组问题
只能先用一行输入a,再用一行输入b[a]——因为cin是从右边开始压栈的,就是先压b[a]再压a,显然压b[a]时还不知道a是多少,后面输入了a,但改变不了已经压栈了的内容。就是说这种情况一定要保证操作b[a]时a必须是已知的。但这种东西与编译器关系很大,也许后来的编译器异想天开,弄个别致的...
关于C++中cin的几个问题
1.cin.getline是读入一行字符,比如:include <iostream.h> void main(){ char str[20];cout<<"Input :";cin.getline(str,20);cout<<str<<endl;} 当输入:abd cdrasdf g的时候就会输出:abd cdrasdf g。2.cin.get()第一个用法,是读入一个字符。include <iostream.h> void main(){ cha...
关于C++输入cin的问题,下面的程序,如果输入的不合法,那就将陷入死循环...
例如你输入的数据为a,然后回车,此时输入缓冲区中就有两个字符,一个是‘a’,一个是回车换行符‘\/n’,接着程序读取,由于类型不匹配,读取失败,并没有读走输入缓冲区中的数据,也就是说,此时输入缓冲区中还是‘a’,和‘\\n’,
c++用cin输入字符问题
cin这是输入函数,cout才是输出。可以改为:cout<<"("<<x<<","<<y<<")";如果你不要小括号就是:cout<<x<<","<<y;希望对你有帮助...
c++中有关cin的问题
value 是int型变量,按下Enter键时,由于读入错误类型值,导致输入流cin的状态变为不可用,于是退出循环。cin的几种状态:cin.eof()cin.bad()cin.fail()cin.good()当前三者 cin.eof() & cin.eof() & cin.fail() 为0时,此时cin.good() 为1,否则cin.good()为0 楼上提到的返回类型为void...
C++ cin输入格式的问题
很简单,你想在输入x y时用逗号分隔,那么其实输进电脑的是三个值,这三个值分别为"x",",","y",此时就要再定义一个字符型变量。main函数如下:int main(){ double x,y;char c;cin>>x>>c>>y;if(fabs(x*x+y*y-1)<0.001) cout<<"Y"<<endl;else cout<<"N"<<endl;return...
C++使用cin时,如果输入字符为什么出现-85899346?
输入数据类型与cin>>指定的类型不一致 (比如你这里定义一个整型变量,但程序启动后却塞给它字符型的数据)会导致cin调用 矢败,cin不再从缓冲区读取数据 ,后面所有试图用cin赋值的变量都会保留原值.你这里说的这个-85899346应该是 定义整型变量没有初始化而保留的原值吧....
c++编程问题 (关于cin的)
第一个cin是用户第一次输入的值,但是你要统计用户输入的正负的个数,那必然是输入多个值。所以在while循环里面的末尾添加cin的作用就是 用户以后输入的值了,知道用户输入0则停止。在while里cin>>n n的值就改变了,那么while()就会触发,进而判断是否满足条件。第二个cin是不指定次数循环进行的必要...
C++ 简单cin问题
cin >> x >> y >> z >>endl;把后面的endl去掉就行了,换行符是输出控制的,你总不能输入一个换行符吧
为什么c++中 cin>>x>>y;是正确,cin>>x, y;是不正确的?说的深奥点,为什 ...
因为cin是以流的方式输入输出的,而不是用参数