C ++文件操作:ios:app和ios之间的区别:吃了吗?

写入文件时, ios::ateios:app什么区别?
在我看来, ios::app让你能够在文件中移动,而使用ios::ate它只能在文件末尾读/写。 它是否正确?

这是相反的方式。 当ios::ate被设置时,初始位置将会是文件的结尾,但是你可以自由地在其后寻找。 当设置ios::app所有的输出操作都在文件的末尾执行。 由于所有的写作都隐含在寻找之前,因此无法在其他地方写入。

它们被指定如下(在C ++ 11的27.5.3.1.4中):

app试图在每次写入之前结束

开放后立即结束并试图结束

使用ios::app时,文件中的写入位置是“粘性的” – 所有的写入都在最后,无论你在哪里寻找。

这里logging的相当不错。

ios::ate “将stream的位置指示符设置为打开时stream的结尾。

ios:app “在每个输出操作之前将stream的位置指示符设置到stream的末尾。

这意味着ios::ate在您打开文件时将您的位置放在文件末尾的区别。 每次刷新stream时, ios::app会将其放在文件末尾。 例如,如果两个程序写入相同的日志文件ios:ate将覆盖从程序打开它以来被其他程序添加到文件的所有内容。 每次您的程序添加日志条目时, ios:app都会跳转到文件末尾。

应用程序:

我们不能移动指针,它只会在最后

吃:

我们可以将logging指针移动到任何其他地方