用 C++进行简单的文件 I/O 操作
文件 I/O 在 C++中比烤蛋糕简单多了。这篇文章详细解释 ASCII 和二进制文件的输入输
出的每个细节,值得注意的是,所有这些都是用 C++完成的。
一、ASCII 输出
为了使用下面的方法, 你必须包含头文件<fstream.h>(译者注:在标准 C++中,
已经使用<fstream>取代<fstream.h>,所有的 C++标准头文件都是无后缀的。)。这
是 <iostream.h>的一个扩展集, 提供有缓冲的文件输入输出操作. 事实上,
<iostream.h> 已经被<fstream.h>包含了, 所以你不必包含所有这两个文件, 如果你
想显式包含他们,那随便你。我们从文件操作类的设计开始, 我会讲解如何进行 ASCII
I/O
操作。 如果你猜是"fstream,"
恭喜你答对了! 但这篇文章介绍的方法,我们分别使
用"ifstream"?
和 "ofstream" 来作输入输出。
如果你用过标准控制台流"cin"?
和 "cout,"
那现在的事情对你来说很简单。我们现在
开始讲输出部分,首先声明一个类对象。
ofstream fout;
这就可以了,不过你要打开一个文件的话, 必须像这样调用 ofstream::open()。
fout.open("output.txt");
你也可以把文件名作为构造参数来打开一个文件.
ofstream fout("output.txt");
这是我们使用的方法, 因为这样创建和打开一个文件看起来更简单. 顺便说一句, 如
果你要打开的文件不存在,它会为你创建一个, 所以不用担心文件创建的问题. 现在就输
出到文件,看起来和"cout"
的操作很像。对不了解控制台输出"cout"的人, 这里有个例子。
int num = 150;
char name[] = "John Doe";
fout << "Here is a number: " << num << "\n";
fout << "Now here is a string: " << name << "\n";
现在保存文件,你必须关闭文件,或者回写文件缓冲. 文件关闭之后就不能再操作了,
所以只有在你不再操作这个文件的时候才调用它,它会自动保存文件。 回写缓冲区会在
保持文件打开的情况下保存文件,
所以只要有必要就使用它。 回写看起来像另一次输出,
然后调用方法关闭。像这样:
fout << flush; fout.close();
现在你用文本编辑器打开文件,内容看起来是这样: