如何从文件读取流和向文件写入流。这就需要用到 C++ 中另一个标准库 fstream,它定义了三个新的数据类型:
数据类型 | 描述 |
---|---|
ofstream | 该数据类型表示输出文件流,用于创建文件并向文件写入信息。 |
ifstream | 该数据类型表示输入文件流,用于从文件读取信息。 |
fstream | 该数据类型通常表示文件流,且同时具有 ofstream 和 ifstream 两种功能,这意味着它可以创建文件,向文件写入信息,从文件读取信息。 |
打开文件
在从文件读取信息或者向文件写入信息之前,必须先打开文件。ofstream 和 fstream 对象都可以用来打开文件进行写操作,如果只需要打开文件进行读操作,则使用 ifstream 对象。
下面是 open() 函数的标准语法,open() 函数是 fstream、ifstream 和 ofstream 对象的一个成员
void open(const char *filename, ios::openmode mode);
关闭文件
当 C++ 程序终止时,它会自动关闭刷新所有流,释放所有分配的内存,并关闭所有打开的文件。但程序员应该养成一个好习惯,在程序终止前关闭所有打开的文件。
下面是 close() 函数的标准语法,close() 函数是 fstream、ifstream 和 ofstream 对象的一个成员。
void close();
写入文件
在 C++ 编程中,我们使用流插入运算符( << )向文件写入信息,就像使用该运算符输出信息到屏幕上一样。唯一不同的是,在这里您使用的是 ofstream 或 fstream 对象,而不是 cout 对象。
读取文件
在 C++ 编程中,我们使用流提取运算符( >> )从文件读取信息,就像使用该运算符从键盘输入信息一样。唯一不同的是,在这里您使用的是 ifstream 或 fstream 对象,而不是 cin 对象。
举 例
#include<iostream>
#include<fstream>
using namespace std;
int main()
{
char data[100];
//以写的模式打开
ofstream outfile;//实例化了一个写文件的对象
outfile.open("E:\C++\asdha - (4).txt");
cout << "请输入你的数据:" << endl;
cout << "请输入你的大名: " << endl;
cin.getline(data, 100);
//cin.getline() 和 cin.get()区别和联系
//两者都读取一行输入,直至换行符,自动添加\0。
//不同之处:getline将丢弃缓存区\n,get()不对\n换行符处理,还保留在缓存区(!!!)。
// 向文件写入用户输入的数据
outfile << data << endl;
cout << "请输入你的年龄: ";
cin >> data;
cin.ignore();//忽略一个东西
//它的一个常用功能就是用来清除以回车结束的输入缓冲区的内容,
//消除上一次输入对下一次输入的影响
// 再次向文件写入用户输入的数据
outfile << data << endl;
// 关闭打开的文件
outfile.close();
// 以读模式打开文件
ifstream infile; //定义一个读取的文件对象
infile.open("afile.dat");
cout << "E:\C++\asdha - (4).txt" << endl;
infile >> data;
// 在屏幕上写入数据
cout << data << endl;
// 再次从文件读取数据,并显示它
infile >> data;
cout << data << endl;
// 关闭打开的文件
infile.close();
return 0;
}
(代码内可能会有错,里面的内容大家仅供参考)