当程序运行时,数据在内存中,但当它结束或计算机关闭时,数据就丢失了。为了永久保存数据,我们需要将其写入文件中。
文件用于存储数据。在本章中,将介绍如何从文件中读取数据并将数据写入文件。
fstream是另一个与iostream类似的c++标准库,用于对文件进行读写。
C语言中文件仅有一个数据类型FILE。 以下是来自fstream库中用于文件处理的数据类型:
数据类型 | 描述 |
---|---|
ofstream | 它用于创建文件和对文件进行写操作。 |
ifstream | 它用于从文件中读取数据。 |
fstream | 它拥有ofstream和ifstream两者的功能,这意味着它可以创建文件,写文件,并从文件中读取。 |
通过文件变量打开文件时需要指明打开文件的目的。例如:写文件,读文件等等。这些是打开文件时需要指定的不同模式。(C语言里有统一的文件指针)
模式 | 描述 |
---|---|
ios::app | 打开文件并把文件指针指向末尾 |
ios::ate | 打开一个文件,并将读/写文件指针移动到文件的末尾。 |
ios::in | 打开文件赋予该文件类型变量读的权限 |
ios::out | 打开文件赋予该文件类型变量写的权限 |
ios::trunc | 如果文件存在,在打开文件之前截断内容。 |
这是打开一个文件的语法
#include <iostream>
#include <fstream>
using namespace std;
int main(){
ofstream file;
file.open ("example.txt");
return 0;
}
上面的例子实现了打开文件。
同样可以打开文件进行读写。具体的例子如下:
#include <iostream>
#include <fstream>
using namespace std;
int main(){
fstream file;
file.open ("example.txt", ios::out | ios::in );
return 0;
}
操作系统中的文件描述符是有限的,所以当你的文件操作结束时理应关闭文件描述符。 下面演示了怎么关闭。
#include <iostream>
#include <fstream>
using namespace std;
int main(){
ofstream file;
file.open ("example.txt");
file.close();
return 0;
}
#include <iostream>
#include <fstream>
using namespace std;
int main(){
char text[200];
fstream file;
file.open ("example.txt", ios::out | ios::in );
cout << "Write text to be written on file." << endl;
cin.getline(text, sizeof(text));
// 把text里面的字符写入到file指向的文件(example.txt)里
file << text << endl;
// 从file指向的文件里读数据存入到text字符串中
file >> text;
cout << text << endl;
// 关闭file文件描述符
file.close();
return 0;
}
这里可以感受到C++对文件的操作设计有些不如C语言所以我加上了C语言有关的文件操作。
详情请看: