background image

用 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(); 

  现在你用文本编辑器打开文件,内容看起来是这样: