平时用的比较多的是iostream标准库,这个标准库提供了cin和cout方法用于从标准输入读取和向标准输出写入。但是却很少用到向文件读取和写入文件,这里要提到另一个标准库fstream
这个库定义了下面几种数据类型:
数据类型
我们是要把数据输出到文件或者是从文件当中读取数据。首先第一步,我们都知道需要打开这个文件:
打开文件
使用open()函数打开文件,
void open(const char *filename, ios::openmode mode);
第二个参数是文件打开的模式:
模式
比如:
ofstream outfile;
outfile.open("file.dat", ios::out | ios::trunc );
表示用写入的模式打开一个文件,并截断文件?(我其实也不大懂这个截断文件是什么意思)
用完文件以后,还是需要养成随手关门的好习惯的。
关闭文件
当 C++ 程序终止时,它会自动关闭刷新所有流,释放所有分配的内存,并关闭所有打开的文件。但程序员应该养成一个好习惯,在程序终止前关闭所有打开的文件。close() 函数是 fstream、ifstream 和 ofstream 对象的一个成员。
如何向文件写入数据呢?
c++中使用流插入运算符( << )向文件写入信息,就像使用该运算符输出信息到屏幕上一样。唯一不同的是,在这里您使用的是 ofstream
或fstream
对象,而不是cout
对象。
读取数据
在 C++ 编程中,我们使用流提取运算符( >> )从文件读取信息,就像使用该运算符从键盘输入信息一样。唯一不同的是,在这里您使用的是ifstream
或 fstream
对象,而不是 cin
对象。
这里给大家举一个简单的例子🌰:
#include<iostream>
#include<fstream>
using namespace std;
int main()
{
char data[100];
// 以写的模式打开文件
ofstream ofile;
ofile.open("test.txt");
cout<<"write to the file"<<endl;
cout<<"Enter your name";
cin.getline(data,100);
//向文件写入用户输入的数据
ofile<<data<<endl;
cout<<"Enter your age:";
cin>>data;
ofile<<data<<endl;
//关闭打开的文件
ofile.close();
//以读的形式打开文件
ifstream ifile;
ifile.open("test.txt");
cout<<"Reading from the file"<<endl;
ifile>>data;
//在屏幕上输出数据
cout<<data<<endl;
// 再次从文件读取数据,并显示它
ifile >> data;
cout << data << endl;
// 关闭打开的文件
ifile.close();
return 0;
}