C++ 之 文件及输入输出操作
文件操作
顺序文件 : 一个有限字符构成的顺序字符流
cpp标准库中:ifstream,ofstream和fstream共3个类用于文件操作一统称为文件流类,类继承树如下。
使用/创建文件的基本流程:
graph LR;
a(打开文件)-->b(读/写文件)
b-->c(关闭文件)
- 打开文件
- 通过指定文件名,建立文件和文件流对象的关联;
- 指明文件的使用方式
- 读写文件 :利用读/写指钍进行相应位置的操作
- 关闭文件
建立顺序文件
程序实现 :
#include <fstream>//包含头文件
ofstream outFile("clients.dat",ios:out|ios::binary); //打开文件
或
ofstream(fout; fout. open("test. out", ios:: outlios: binary);
打开并建立文件的选项
- ios::out 输出到文件,删除原有内容
- ios:app 输出到文件,保留原有内容,总是在尾部添加
- ios:binary 以二进制文件格式打开文件
文件读写指针
程序实现 :
ofstream fout("a1.out",ios::app);
long location=fout.tellp();//取得写指针的位置
location=10L;fout.seekp(location);//将写指针移动到第10个字节处
fout.seekp(location,ios:beg);//从头数location
fout.seekp(location,ios:cur);//从当前位置数location
fout.seekp(location,ios::end);//从尾部数location
输入输出
输入流对象:
- cin与标准输入设备相连
输出流对象:
- cout与标准输出设备相连 可以重定向(到文件)
- cerr与标准错误输出设备相连 不可以重定向 无缓冲区直接输出
- clog与标准错误输出设备相连 不可以重定向 有缓冲区
输入输出重定向
freopen("test.txt","w",stdout);//将标准输出重定向到test.txt文件
freopen("t.txt","r",stdin);//cin被改为从t.txt中读取数据
istream类的成员函数
bool eof();//判断输入流是否结束
int peek();//返由下一个字符,但不从流中去掉
istream & putback(charc);//将字符ch放回输入流
istream & ignore(int nCount=1,int delim=EOF);//从流中删掉最多nCount个字符,遇到EOF时结束.
任世事无常,勿忘初心