您的位置:首页 > 编程语言 > C语言/C++

C++ 输入输出流

2016-04-07 15:50 351 查看
C++ 输入输出理解

C++ 的io 分三大块

- 是标准输入输出(iostream)cin,cout,cerr,clog
- 是文件输入输出流,(fstream,ofstream,ifstream)
- 是字符串输入输出流(strstream,istrstream,ostrstream)


对cin ,cout 的理解

cin:

-cin是istream类的对象,它从标准输入设备(键盘)获取数据,程序中的变量通过流提取符“>>”从流中提取数据,提取的时候会根据变量的类型从输入流中提取相应长度的字节,流提取符“>>”从流中提取数据时通常跳过输入流中的空格、tab键、换行符等空白字符。
-当输入流cin处于出错状态时,如果测试cin的值,可以发现它的值为false(假),即cin为0值。如果输入流在正常状态,cin的值为true(真),即cin为 一个非0值。可以通过测试cin的值,判断流对象是否处于正常状态和提取操作是否成功。如:if(!cn) //流cin处于出销状态,无法正常提取数据cout<<"error";

cout:

- 注意:只有在输入完数据再按回车键后,该行数据才被送入键盘缓冲区,形成输入流,提取运算符“>>”才能从中提取数据。需要注意保证从流中读取数据能正常进行。遇到endl,或者是flush方法才会将数据缓冲区中进行输出。


实际上,在内存中为每一个数据流开辟一个内存缓冲区,用来存放流中的数据。当用cout和插入运算符“<<”向显示器输出数据时,先将这些数据送到程序中的输出缓冲区保存,直到缓冲区满了或遇到endl,就将缓冲区中的全部数据送到显示器显示出来。在输入时,从键盘输入的数据先放在键盘的缓冲区中,当按回车键时,键盘缓冲区中的数据输入到程序中的输入缓冲区,形成cin流,然后用提取运算符“ >>”从输入缓冲区中提取数据送给程序中的有关变量。总之,流是与内存缓冲区相对应的,或者说,缓冲区中的数据就是流。



C++提供了低级的I/O功能和高级的I/O功能。


高级的I/O功能是把若干个字节组合为一个有意义的单位(如整数、单精度数、双精度数、字符串或用户自定义的类型的数据),然后以ASCII字符形式输入和输出。例如将数据从内存送到显示器输出,就属于高级I/O功能,先将内存中的数据转换为ASCII字符,然后分别按整数、单精度数、双精度数等形式输出。这种面向类型的输入输出在程序中用得很普遍,用户感到方便。但在传输大容量的文件时由于数据格式转换,速度较慢,效率不高。

所谓低级的I/O功能是以字节为单位输入和输出的,在输入和输出时不进行数据格式的转换。这种输入输出是以二进制形式进行的。通常用来在内存和设备之间传输一批字节。这种输入输出速度快、效率高,一般大容量的文件传输用无格式转换的I/O。但使用时会感到不大方便。


低级IO叫做二进制流输入输出
高级IO叫做ASCII流输入输出


详细的c++ 输入输出流教程在这里

代码在github上面
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: