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

时间:2012-04-28 01:12:06

标签: c++ file fstream c++-standard-library

写入文件时ios::ateios:app之间的区别是什么 在我看来,ios::app使您能够在文件中移动,而使用ios::ate时,它只能在文件末尾读/写。这是对的吗?

5 个答案:

答案 0 :(得分:65)

反过来说。设置ios::ate时,初始位置将是文件的结尾,但您可以随后进行搜索。设置ios::app后,所有输出操作将在文件末尾执行。由于所有写入都隐含在搜索之前,因此无法在其他地方写入。

答案 1 :(得分:32)

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

  

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

     

ate打开并在打开后立即寻求结束

使用ios::app文件中的写入位置是“粘性的” - 所有写入都在最后,无论您在何处寻找。

答案 2 :(得分:22)

记录here非常好。

ios::ate“将流的位置指示器设置为打开时流的末尾。”

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

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

答案 3 :(得分:8)

应用:

  

我们无法移动指针。它只会在结束时

吃:

  

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

答案 4 :(得分:0)

ios::ate选项用于输入和输出操作 ios::app允许我们将数据添加到文件末尾。