- 1、本文档共59页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第10章 流类库与输入输出 10.1 I/O标准流类 10.2 格式化I/O 10.3 文件流 10.4 字符串流 10.1 I/O标准流类 10.1.1 预定义流 10.1.2 C++中的流类库 在C++语言中,数据的输入和输出(简写为I/O)包括对标准输入设备键盘和标准输出设备显示器、对在外存磁盘上的文件和对内存中指定的字符串存储空间进行输入输出这三个方面。对标准输入设备和标准输出设备的输入输出简称为标准I/O,对在外存磁盘上文件的输入输出简称为文件I/O,对内存中指定的字符串存储空间的输入输出简称为串I/O。 C++中把数据之间的传输操作称作流。在C++中,流既可以表示数据从内存传送到某个载体或设备中,即输出流;也可以表示数据从某个载体或设备传送到内存缓冲区变量中,即输入流。在进行I/O操作时,首先打开操作,使流和文件发生联系,建立联系后的文件才允许数据流入或流出,输入或输出结束后,使用关闭操作使文件与流断开联系。 C++中所有流都是相同的,但文件可以不同。使用流以后,程序用流统一对各种计算机设备和文件进行操作,使程序与设备、程序与文件无关,从而提高了程序设计的通用性和灵活性。也就是说,无论与流相联系的实际物理设备差别有多大,流都采用相同的方式运行。这种机制使得流可以跨越物理设备平台,实现流的透明运作,而与实际的物理设备无关。例如,往显示器上输出字符和向磁盘文件或打印机输出字符,尽管接受输出的物理设备不同,但具体操作过程是相同的。 10.1.1 预定义流 1.cout 在ostream输出流类中定义有对左移操作符重载的一组公用成员函数,函数的具体声明格式为: ostream operator(简单类型标识符); 2.cin 在istream输入流类中定义有对右移操作符重载的一组公用成员函数,函数的具体声明格式为: istream operator(简单类型标识符); 3.cerr cerr类似标准错误文件。cerr与cout的差别在于: (1)cerr不能重定向。 (2)cerr不能被缓冲,它的输出总是直接传达到标准输出设备上。 4.clog clog是不能重定向的,但是可以被缓冲。在某些系统中,由于缓冲,使用clog代替cerr可以改进显示速度。 clog Error \n; 10.1.2 C++中的流类库 C++语言系统为实现数据的输入和输出定义了一个庞大的类库,它包括的类主要有ios,istream,ostream,iostream,ifstream,ofstream,fstream,istrstream,ostrstream和strstream等。 其中ios为根基类,它直接派生四个类:输入流类istream、输出流类ostream、文件流基类fstreambase和字符串流基类strstreambase,输入文件流类ifstream同时继承了输入流类和文件流基类(当然对于根基类是间接继承),输出文件流类ofstream同时继承了输出流类和文件流基类,输入字符串流类istrstream同时继承了输入流类和字符串流基类,输出字符串流类ostrstream同时继承了输出流类和字符串流基类,输入输出流类iostream同时继承了输入流类和输出流类,输入输出文件流类fstream同时继承了输入输出流类和文件流基类,输入输出字符串流类strstream同时继承了输入输出流类和字符串流基类。 10.2 格式化I/O 10.2.1 ios类中的枚举常量 10.2.2 使用ios成员函数 10.2.3 使用I/O操作符 10.2.4 检测流操作的错误 10.2.1 ios类中的枚举常量 在根基类ios中定义有三个用户需要使用的枚举类型,由于它们是在公用成员部分定义的,所以其中的每个枚举类型常量在加上ios::前缀后都可以为本类成员函数和所有外部函数访问。 在三个枚举类型中有一个无名枚举类型,其中定义的每个枚举常量都是用于设置控制输入输出格式的标志使用的。 该枚举类型定义如下: enum { skipws,left,right,internal,dec,oct,hex,showbase,showpoint, uppercase,showpos,scientific,fixed,unitbuf,stdio }; 各枚举常量的含义如下: (1)skipws。 (2)left,right,internal。 (3)dec,oct,hex。 (4)showbase。 (5)showpoint。 (6)uppercase。 (7)showpos。 (8)scientific,fixed。 (9)unitbuf,stdio。 10.2.2 使用ios成员函数 ios类提供成员函数对流的
文档评论(0)