C++ Filehandling:ios:app和ios之间的区别:吃了吗?

Ada*_*m_G 56 c++ fstream file c++-standard-library

写入文件ios::ateios:app写入文件时有什么区别.
在我看来,ios::app你可以在文件中移动,而ios::ate只能在文件的末尾读/写.它是否正确?

Jon*_*rdy 67

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


Ste*_*sop 35

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

app 在每次写作之前寻求结束

ate 开放后立即寻求结束

随着ios::app文件中的写入位置"粘滞" - 无论您在何处寻找,所有写入都在最后.


Haa*_*hii 25

这里有很好的记录.

ios::ate "将流的位置指示器设置为打开时流的末尾."

ios::app "在每次输出操作之前,将流的位置指示器设置为流的末尾."

这意味着ios::ate当您打开文件时,将您的位置置于文件末尾的区别.ios::app而是每次刷新流时将其放在文件的末尾.例如,如果您编写同一个日志文件的两个程序ios::ate将覆盖其他程序自程序打开以来添加到该文件的任何内容.ios:app每次程序添加日志条目时,它都会跳转到文件末尾.


小智 9

应用程序:

我们无法移动指针.它只会结束

吃:

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