洞察提升小程序标签管理,实现高效的金融行业数字化转型
624
2022-11-29
9、流类库与输入/输出
就像C语言一样,c++语言中也没有输入/输出语句。但c++编译系统带有一个面向对象的输入/输出软件包,它就是I/O流类库。
1、I/O流的概念及流类库结构
I/O流类库是C语言中I/O函数在面向对象的程序设计方法中的一个替换产品。
当程序与外界环境进行信息交换时,存在着两个对象,一个是程序中的对象,另一个是文件对象。
流是一种抽象,它负责在数据的生产者和数据的消费者之间建立联系,并管理数据的流动。程序建立一个流对象,并指定这个流对象与某个文件对象建立连接,程序操作流对象,流对象通过文件系统对所连接的文件对象产生作用。由于流对象是程序中的对象与文件对象进行交换的界面,对程序对象而言,文件对象有的特性,流对象也有,所以程序将流对象看作是文件对象的化身。
与输入输出设备交互也是通过I/O流类来实现的。流所涉及的范围远不止于此,凡是数据从一个地方传输到另一个地方的操作都是流的操作。像网络数据交换、进程数据交换等都是流操作。因此,一般意义下的读操作在流数据抽象中被称为从流中提取,写操作被称为向流中插入。
I/O流类库的基础是类模板,类模板提供了库中的大多数功能,而且可以作用于不同类型的元素,这些类模板都以"basic_"为前缀。
I/O流类库中有两组类模板实例:面向宽字符的和面向窄字符的。面向宽字符的类支持多字节的字符,面向窄字符的类支持单字节字符。头文件
2、输出流
一个输出流对象是信息流动的目标,最重要的三个输出流是ostream,ofstream和ostringstream。
预先定义的ostream类对戏那个用来完成向标准设备的输出,包括:
cout标准输出
cerr标准错误输出,没有缓冲,发送给他的内容立即被输出
clog类似于cerr,但是有缓冲,缓冲区满时被输出。
ofstream类支持磁盘文件输出。如果你需要一个只输出的磁盘文件,可以构造一个ofstream类的对象。在打开文件之前或之后可以指定ofstream对象接受二进制或文本模式数据。很多格式化选项和成员函数可以应用于ofstream,包括基类ios和ostream的所有功能。
如果在构造函数中指定一个文件名,当构造这个文件时该文件是自动打开的。否则,可以在调用默认构造函数之后使用open成员函数打开文件,或者在一个由文件指示符标识的打开文件基础上构造一个ofstream对象。
2.1构造输出流对象
之前都是将信息输出到标准输出设备,使用的是cout。如果要使用文件流将信息输出到文件,便需要使用构造函数来建立流对象。
构造输出文件流的常用方法如下:
使用默认构造函数,然后调用open成员函数,例如:
myFile.open("filename",iosmode);//打开文件,使流对象与文件建立联系
或:ofstream * pmyFile=new ofstream;//建立一个动态的输出文件流对戏那个
pmyFile->open("filename",iosmode);//打开文件,使流对象与文件建立联系
在调用构造函数时指定文件名和模式:
ofstream myFile("filename",iosmode);
也可以使用同一个流先后打开不同的文件(在同一时刻只有一个是 打开的):
ofstream ofile;
ofile.open("FILE1",iosmode);//打开文件FILE1
//....向文件“FILE1”输出
ofile.close();//关闭FILE1
ofile.open("FILE2",iosmode);//打开文件FILE2
//....向文件“FILE2”输出
ofile.close();//关闭FILE2
//当对象ofile离开它的作用域时便消亡
2.2使用插入运算符和操纵符
介绍如何控制输出格式以及如何为自己的类建立插入运算符。插入(<<)运算符是所有标准c++数据类型预先设计的,用于传送字节到一个输出流对象。插入运算符与预先定义的操纵符一起工作,可以控制输出格式。
很多操纵符都定义在ios_base类中和
1、输出宽度
可以通过在流中放入setw操纵符或调用width成员函数为每个项指定输出宽度。
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~