关于c++中的cin

while(cin>>s)
{
cout<<s<<endl;
}
这条语句,我输入sdf sdf ssf sdf f
执行结果是如下:
sdf
sdf
ssf
sdf
f
以前是学JAVA的,想知道这是为什么
cin的话在得到有效字符后遇到空格就结束输入了,难道是sdf sdf ssf sdf f作为几个不同的输入被缓存了?那为什么每个结果都endl了?

我来详细地给楼主解释一下这个程序的执行过程吧
cin读的是输入缓冲区(stdin)中的内容,只有缓冲区为空的时候才会要求用户输入,否则只是读取缓冲区的内容。
在第一次运行cin>>s的时候,
缓冲区为空,所以会显示下划线让你输入,线程挂起,然后你输入sdf sdf ssf sdf f EOF 回车
这时候,cin>>s返回,第一个sdf读进s,然后便输出sdf和换行
下一次执行cin>>s的时候,缓冲区不为空,所以不再要求用户输入,读取第二个sdf,然后输出sdf换行,依次类推
直到cin读到eof的时候,cin>>s返回false,循环退出,程序结束
温馨提示:内容为网友见解,仅供参考
第1个回答  2012-03-04
恩,cin遇到空格就结束了,这几个是作为不同输入的,也就是先输入第一个sdf,因为紧随着后面的是空格,然后就输出。再输入第二个sdf,再输入ssf,再输入sdf,最后输入的是f,因为换行,eof,空格这些都能让cin返回追问

恩,我没明白的是我就输入那么一行,一行全结束的时候才输出并且一下4行,前面的那些被缓存了么

追答

前面的那些输入是进入系统的输入缓冲区的,然后cin从系统的输入缓冲区(或者说输入流)一个一个提取,遇到空格、回车、EOF这些就返回

第2个回答  2012-03-04
cin从输入流中读入时遇到空格就结束了,因为在C/C++中字符串是以\0(也就是空格)结束的。你所输入的被认为是5个字符串了。在第一次读入"sdf",遇到\0后,就认为接收完了一个字符串,然后打印。然而输入流中还有数据,因此循环条件还成立,它又从输入流中读入,遇到\0后停止接收再打印,直到接收完输入流中的数据。而每次打印你都加了endl,这就是为什么每个结果都换行的原因。

cin是什么
cin是C++中的标准输入流对象。C++中的cin是字符输入流对象的标准表示,用于从标准输入设备读取数据。它是C++编程语言中的一个核心组成部分,用于实现输入输出操作。详细解释如下:1. cin的基本概念:在C++中,cin是预定义的对象,代表了标准输入流。它属于iostream库的一部分,用于处理输入输出操作。通过cin...

cin是什么意思
cin是C++中的标准输入流对象。以下是详细的解释:一、基本概念 在C++编程语言中,cin是一个预定义的对象,代表标准输入流。它主要用于从键盘读取数据,是C++中进行输入操作的重要工具。二、cin的功能和使用 cin的主要功能是从标准输入设备(通常是键盘)读取数据。它可以根据不同的数据类型,如整型(int...

C++里关于cin问题
cin可以看成把输入传入一个变量中,但是"age"是一个字符串,在内存中没有固定地址,所以不知道往那里传,如果你想要去掉引号,则可以看成一个变量名,但是需要加上一个变量定义,就是加上一句 string age;

c++cin是什么意思
cin,是一个C++标准的输入流对象,使用右移运算符">>"从设备键盘取得数据,送到输入流对象cin中,然后送到内存。C++编程语言I\/O流中的标准输入流,需要包含iostream头文件,即#include<iostream>,cin分为两个音节读为"cin",音标"\/si:ɪn\/"。cin代表标准输入设备,使用右移运算符">>"从设备...

c++中有关cin的问题
cin.fail()cin.good()当前三者 cin.eof() & cin.eof() & cin.fail() 为0时,此时cin.good() 为1,否则cin.good()为0 楼上提到的返回类型为void,这是错误的,因为常使用 cin >> a >> b >> c;如果是void型,这明显不可行。返回的类型与cin本身类型一致,即一个istream&类型,由于流...

c++编程问题 (关于cin的)
第一个cin是用户第一次输入的值,但是你要统计用户输入的正负的个数,那必然是输入多个值。所以在while循环里面的末尾添加cin的作用就是 用户以后输入的值了,知道用户输入0则停止。在while里cin>>n n的值就改变了,那么while()就会触发,进而判断是否满足条件。第二个cin是不指定次数循环进行的必要...

cin是什么意思数学?
cin是C++编程语言中最基本和实用的输入方式之一。通过cin,程序员可以轻松地从用户处读取信息,从而有效地实现一些程序运行逻辑。cin是一种非常方便的输入方法,许多新手程序员都会选择使用它。cin输入流操作符是C++编程中一个非常重要的组成部分。它实现了标准输入设备,例如键盘,向程序中传递信息的功能。C...

c++语言关于cin的使用问题
一般只要用cin>>x>>y;就行了,程框矿里面输入时 用空格或者回车或者TAB键会自动隔开x,y 如果想要把空格记录进变量x或者y里面 常用的方法是 用cin.get 比如 char ch;ch=cin.get();或者cin.get(ch);括号中也可以放数组 如 char a[20];cin.get(a,20);cout<<a<<endl;那么在键盘...

c++ 中的cin 问题?
cin.clear( );cin.ignore();\/*读到非法字符后,输入流将处于出错状态,为 了继续获取输入,首先要调用clear函数 来清除输入流的错误标记,然后才能调用 ignore函数来清除输入缓冲区中的数据。 *\/ 从我以前的代码里直接弄出来的,呵呵,终于感觉注释的好处了。希望能帮上忙,我这个是用来解决非法字符...

c 中 cin是什么意思
1、C++是一种广泛使用的编程语言,而在C++中,cin是一个非常重要的输入流。cin可以从控制台或其他输入设备中读取输入数据。通过cin,我们可以将键盘输入的数据存储在变量中,然后在程序中使用。要使用cin,我们需要在代码中包含iostream头文件,并使用“ >> ”操作符将输入存储在目标变量中。2、使用cin...

相似回答