C/C++_C++流

一.C++流的概念

C++流的体系结构

C++为实现数据的输入输出定义了一系列的流类,这些类之间存在派生、继承关系。

要利用C++流,必须在程序中包含有关的头文件,以便获得相关流类的声明。为了使用新标准的流,相关头文件的文件名中不得有扩展名。与C++流有关的头文件有:

  1. iostream:使用cin、cout等预定义流对象针对标准设备进行I/O操作。
  2. fstream:使用文件流对象针对磁盘文件进行I/O操作。
  3. strstream:使用字符串流对象针对内存字符串空间进行I/O操作。
  4. iomanip:使用setw、fixed等操作符进行格式控制。

预定义流对象

C++流有四个预定义的流对象,它们的名称及与之联系的I/O设备如下:

  1. cin 标准输入。
  2. cout 标准输出。
  3. cerr 标准出错信息输出。
  4. clog 带缓冲的标准出错信息输出。

其中cin为istream类对象,其余三个为ostream类对象。通常情况下,标准输入设备就是指键盘,标准输出设备和标准出错信息输出设备就是指显示器。

提取运算符>>和插入运算符<<

输入流类istream重载了运算符>>,用于数据输入,其原型为:

istream& operator>>( istream&, <类型>&);

重载的>>的功能是从输入流中提取数据赋值给一个变量,因此称之为提取运算符(extractor)。当系统执行cin>>x操作时,将根据实参x的类型调用相应的提取运算符重载函数,把x的引用传递给对应的形参,接着从键盘的输入缓冲区中读入一个值并赋给x后,返回istream流,以便继续使用提取运算符为下一个变量输入数据。

输出流类ostream重载了运算符<<,用于数据输出,其原型为:

ostream& operator<<( ostream&,const<类型>&);

重载的<<的功能是把表达式的值插入到输出流中,因此称之为插入运算符(inserter)。当系统执行cout<<x操作时,首先根据x的类型调用相应的插入运算符函数,把x的值传送给对应的形参,接着执行函数体,把x的值输出到显示器屏幕上,在当前屏幕光标位置显示,然后返回ostream流,以便继续使用插入运算符输出下一个表达式的值。

有格式输入输出和无格式输入输出

利用C++流既可以进行有格式输入输出,也可以进行无格式输入输出。

有格式输入输出针对的是键盘、显示器、打印机等字符设备以及磁盘中的文本文件。所以,cin、cout等预定义流对象只能用于有格式输入输出。提取运算符>>和插入运算符<<也只能用于有格式输入输出。

无格式输入输出只能针对磁盘文件,需调用流对象中专门的成员函数实现。

操作符

除了提取运算符>>和插入运算符<<,使得输入输出的表达简洁、形象、直观外,C++流还提供了能够与运算符>>或<<一起工作的预定义操作符,用来控制输入输出。有了操作符,C++流操作在风格上更加统一,输入输出操作也更加流畅。

例如:cout << “Value=” << setw(6) << i;

其中的setw用来设置输出宽度。C++流提供了很多操作符,包含在头文件iomanip中。

发布了94 篇原创文章 · 获赞 37 · 访问量 3442

猜你喜欢

转载自blog.csdn.net/Rocky6688/article/details/103543869