C++流的基础知识

来源:互联网 发布:高仿香港身份证淘宝 编辑:程序博客网 时间:2024/06/04 00:32

》C++流的体系结构

       

        C++为实现数据的输入输出定义了一系列的流类,这些类之间的派生、继承关系如上图所示。这些类中的一部分是用模板实现的,途中用细线框表示。图中的虚线表示模板类与模板类实例的关系。

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

        与C++流有关的头文件:

               # iostream:使用cin、cout等预定义流对象针对标准设备进行I/O操作。

               # fstream:使用文件流对象针对磁盘文件进行I/O操作。

               # strstream:使用字符串流对象针对内存字符串空间进行I/O操作。

               # iomanip:使用setw、fixed等操作符进行格式控制。


》预定义流对象

        C++流有4个预定义的流对象:

              # cin         标准输入

              # cout       标准输出

              # cerr        标准出错信息输出

              # 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流,以便继续使用插入运算符输出下一个表达式的值。

         除了可以将<<和>>运算符作用于char  int double char* bool 等C++固有的类型外,也可以将其作为非成员函数重载作用于用户自定义类型。


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

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

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

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


》操作符

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

        例:    cout<<"value="<<setw(6)<<i;

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

0 0
原创粉丝点击