头文件
C++中与文件输入输出相关的函数定义在头文件 <fstream> 中
<fstream>
读写类型
fstream中定义了三个类型来支持文件的读写,分别是
ifstream | 从一个给定文件中读取数据 |
ofstream | 向一个给定文件写入数据(若文件不存在就创建它) |
fstream | 读写给定文件 |
常用操作
假设创建一个未绑定的文件流:fstream fstrm;有如下常用操作
fstrm>>n | 将文件中的数据读入n |
fstrm<<n | 将n所存放的数据写入文件 |
fstrm.open(s) | 打开名为s的文件,并将文件与fstrm绑定。 |
fstrm.is_open() | 返回一个布尔值,指出与fstrm绑定的文件是否成功打开且尚未关闭 |
fstrm.close() | 关闭与fstrm绑定的文件。 |
fstrm.eof() | 返回一个布尔值,判断是否到达文件尾。(在文件指针时使用) |
代码示例
#include<iostream>
#include<fstream> //引入头文件
using namespace std;
int main(){
// 创建一个fstream对象
fstream infile;
// 打开文件
infile.open("test.txt");
// 当文件成功打开是输出yes,否则输出wrong
if(infile.is_open())
cout<<"yes"<<endl;
else
cout<<"wrong"<<endl;
// 关闭文件
infile.close();
return 0;
}
注意
可以将创建文件流对象和打开文件合并为一行代码,即
// 创建一个fstream对象
fstream infile;
// 打开文件
infile.open("test.txt");
可用如下代码等效替换
// 创建一个fstream对象并将其与test.txt文件相关联
fstream infile("test.txt");
文件打开常用模式
ios::in | 只读 |
ios::out | 只写 |
ios::app | 从文件末尾开始写,防止丢失文件中原来就有的内容 |
ios::truc | 打开文件并清空内容 |
代码示例
#include<iostream>
#include<cstring>
#include<fstream> //引入头文件
using namespace std;
int main(){
// 以只写模式打开文件
ofstream outfile("test.txt",ios::out);
string tmp;
// 以行为单位连续读入字符串并将内容写入test.txt中,按ctrl+z结束读入
while(getline(cin,tmp)){
outfile<<tmp;
outfile<<endl;
}
outfile.close();
// 以只读的模式打开文件
ifstream infile("test.txt",ios::in);
// 以行为单位连续从文件读入字符串并将内容输出
while(getline(infile,tmp)){
cout<<tmp<<endl;
}
infile.close();
return 0;
}
运行结果
参考于:C++读写TXT文件中的string或者int型数据以及string流的用法
《C++ Primer》 文件输入输出(P283)