C++输入流和输出流心得

来源:互联网 发布:cocos2d js 官网 编辑:程序博客网 时间:2024/05/17 16:56

cout语句的一般格式为

cout<<表达式1<<表达式2<<...<<表达式n;

cin语句一般格式为

cin>>表达式1>>表达式2>>...表达式n;


在进行输入或输出操作时,cout、cin都是按从右至左的原则进行求值的;因此我们可能会碰到下面的这种情况:

int i = 1 ;

cout << i++ <<i++ ;


输出结果为2、1。

因为cout首先对右边的表达式求值,得到该部分的输出值为1,之后i变为2,再对左边的i++表达式求值,自然输出值就变为2了,但是最终 i 则变为3.


在定义流对象时,系统会在内存中开辟一段缓冲区,用来暂存输入输出刘的数据。在执行cout语句时,并不是插入一个数据就马上输出一个数据,而是先把插入的数据顺序存放到输出缓冲区中,直到输出缓冲区满或遇到cout语句中的endl(或 '\n' ,ends,flush)为止。此时将缓冲区中已有的数据一起输出,并清空缓冲区。输出流中的数据在系统默认的设备(一般为显示器)中输出。

在用cin输入时,系统也会根据变量的类型从输入流中提取相应长度的字节。如有

char c1,c2;

int a;

float b;

cin>>c1>>c2>>a>>b;

若输入

1234  56.78


系统会取第一个字符'1'给字符变量c1,取第二个字符'2'给c2,然后将34给整型变量a,之后遇到空格,认为34和56.78是分开的,因此最后取56.78给浮点型变量b。

注意:输入流把空格作为数据间的分隔符,不予提取。因此不能用cin语句把空格字符和回车换行符作为字符输入给字符变量,因为它们将被跳过。如果一定要将空格字符或回车换行符输入给字符变量,可以用getchar函数。


char s[20] ;

cin>>s;

cout<<s;


当输入

Hello world!


我们将得到的输出仅仅是Hello。这正是因为空格字符不能被cin显示,只能作为数据分隔符。因此到此输入流认为数据已经提取结束了。


原创粉丝点击