一、I/O类关系
在C++不直接处理输入输出,而是通过标准库中的I/O流类来进行处理。标准库主要有下面一些类:istream,ostream,iostream,ifstream,ofstream,fstream等等。其类关系图如下:
其中istream用来处理输入流,ostream处理输出流,iostream处理输入输出流,ifstream处理文件数据输入,ofstream处理文件数据输出,fstream处理文件数据输入输出。sstream中各类主要处理读写内存中string对象。
常见的流处理对象及运算符:
- cin 一个istream对象,从标准输入读取数据
- cout 一个ostream对象,向标准输出写入数据
- cerr 一个ostream对象,用于输出程序错误信息,写入到标准错误
- >>运算符,从一个istrem对象读取输入数据
- <<运算符,向一个ostream对象写入输出数据
参考C++标准I/O库用法。
二、ifstream,ofstream,fstream
ifstream,ofstream,fstream这3个类都在<fstream>
中,因此需要用到相关文件处理需要包含此头文件。fstream基本包含了前面两个的功能,下面介绍fstream的用法。创建fstream类对象的方式:
- fstream obj;创建一个未绑定的文件流
- fstream obj(“file name”);创建一个文件流,并打开文件名对应的文件
- fstream obj(“file name”,mode );与2类似,以mode模式打开
第一种方式关联文件需要利用函数open(“file name”,mode ),需要注意的是不管用哪种方式创建文件对象,若是路径下文件不存在想要自动创建相应的文件,则必须加上模式ios::out。打开模式有以下一些方式:
- ios::in 以读取方式打开文件
- ios::out 以写入方式打开文件
- ios::ate 存取指针在文件末尾
- ios::app 写入时采用追加方式
- ios::trunc 写入时抹去旧数据
- ios::binary 以二进制方式存取