I/O流的概念
当程序与外界环境进行信息交换时,存在着两个对象,一个是程序中的对象,另一个是文件对象。 流是一种抽象,它负责在数据的生产者和数据的消费者之间建立联系,并管理数据的流动。 程序建立一个流对象,并指定这个流对象与某个文件对象建立连接,程序操作流对象,流对象通过文件系统对所连接的文件对象产生作用。 读操作在流数据抽象中被称为(从流中)提取,写操作被称为(向流中)插入。
预先定义的输出流对象:cout 标准输出 cerr 标准错误输出,没有缓冲,发送给它的内容立即被输出。 clog 类似于cerr,但是有缓冲,缓冲区满时被输出。
ofstream类支持磁盘文件输出
如果在构造函数中指定一个文件名,当构造这个文件时该文件是自动打开的
ofstream myFile("filename");
可以在调用默认构造函数之后使用open成员函数打开文件
ofstream myFile; //声明一个静态文件输出流对象
myFile.open("filename"); //打开文件,使流对象与文件建立联系
在构造对象或用open打开文件时可以指定模式
ofstream myFile("filename", ios_base::out | ios_base::binary);
文件输出流成员函数
输出流成员函数有三种类型: 与操纵符等价的成员函数。 执行非格式化写操作的成员函数。 其它修改流状态且不同于操纵符或插入运算符的成员函数。
open函数 把流与一个特定的磁盘文件关联起来。 需要指定打开模式。
put函数 把一个字符写到输出流中。
write函数 把内存中的一块内容写到一个文件输出流中
seekp和tellp函数 操作文件流的内部指针
close函数 关闭与一个文件输出流关联的磁盘文件 错误处理函数 在写到一个流时进行错误处理
字符串输出流ostringstream
用于构造字符串 功能 支持ofstream类的除open、close外的所有操作 str函数可以返回当前已构造的字符串 典型应用 将数值转换为字符串
重要的输入流类: istream类最适合用于顺序文本模式输入。 cin是其实例。 ifstream类支持磁盘文件输入。 istringstream
输入流对象
如果在构造函数中指定一个文件名,在构造该对象时该文件便自动打开。
ifstream myFile("filename");
在调用默认构造函数之后使用open函数来打开文件。
ifstream myFile;//建立一个文件流对象
myFile.open("filename",); //打开文件"filename”
打开文件时可以指定模式 ifstream myFile("filename", ios_base::in | ios_base::binary);
输入流成员函数
open函数把该流与一个特定磁盘文件相关联。
get函数的功能与提取运算符(>>)很相像,主要的不同点是get函数在读入数据时包括空白字符。
getline的功能是从输入流中读取多个字符,并且允许指定输入终止字符,读取完成后,从读取的内容中删除终止字符。
read成员函数从一个文件读字节到一个指定的内存区域,由长度参数确定要读的字节数。 如果给出长度参数,当遇到文件结束或者在文本模式文件中遇到文件结束标记字符时结束读取。
seekg函数用来设置文件输入流中读取数据位置的指针。
tellg函数返回当前文件读指针的位置。
close函数关闭与一个文件输入流关联的磁盘文件。
字符串输入流istringstream
用于从字符串读取数据 在构造函数中设置要读取的字符串 功能 支持ifstream类的除open、close外的所有操作 典型应用 将字符串转换为数值