2011-10-09 24 views
0

假设我声明了一个文件ofstream myFile。现在我只想创建一次该文件,并且当我第二次执行此行时,我不想覆盖该文件并创建一个新文件?多次执行时,Ofstream覆盖文件内容

+0

你有没有考虑选择不同的文件名? –

+0

对于即将开展的工作而言,这是不实际的。我在CGI网页上工作 –

回答

1

如果您有一个文件的单功能设置(如日志),您可以考虑使用静态变量。

例如:

static ofstream* mylogger::outfile = new ofstream ("log.log"); 

太从主要功能,你应该推清理功能

atexit (mylogger::closePointers); 
+0

你为什么要动态分配'ofstream'? –

+0

将其公开给其他功能,以便更容易关闭。 – Mikhail

0
ofstream myFile; 

它根本没有创建文件。您尚未将文件名传递给构造函数。如果你通过它,它会创建文件,如果该文件已经不存在。这也意味着,如果您不想第二次覆盖该文件,请改为传递其他参数。

+0

如果我以追加模式创建并打开文件,它是否会第二次覆盖文件? –

+0

@SteffanHarris:号码试试吧。 – Nawaz

1
ofstream myfile("filename",ios::app); 

很酷,但这种将继续追加到文件中。一开始如果文件不存在,就会创建它。