2012-04-20 35 views
2

我正在使用ofstream在一个循环内以ios::app模式向文件输出一些文本。但经过一些步骤后,我需要清除文件的内容。我知道我们可以通过删除文件并再次打开或使用ios::trunc再次打开它,但是有没有我可以在没有关闭的情况下完成并再次打开文件?有没有什么办法可以在C++中动态地清除文本文件的内容?

+2

你在寻求避免两行简单代码的方法吗? – ildjarn 2012-04-20 23:23:33

+1

为什么你想写一些东西到一个文件,只是为了再次删除它,所有内部循环? – garbagecollector 2012-04-20 23:28:06

+0

该文件用于存储用于调试的程序输出的临时状态。但是一次输出的信息太多了大约300M。我会每10个循环存储一些状态。此信息仅用于调试(直至出现某些消息)。由于整个程序循环数百万次,如果每次打开文件并再次关闭它,速度会非常慢。 – user1285419 2012-04-20 23:33:56

回答

2

如果您已在ios::app模式下打开它,则无法在不重新打开内容的情况下清除内容。 ofstream只能将文本放入文件中,并且由于文本文件是连续的,因此无法直接删除它们上的数据。

+0

好的,谢谢你的回复。 – user1285419 2012-04-20 23:39:02

0

注意确定io流是否可行,但通常情况下,您可以通过将打开的文件的当前位置设置为0,然后在文件上设置EOF标记来截断打开的文件。例如,在Win32 API中,您可以使用SetFilePointer()SetEndOfFile()来完成此操作。

相关问题