写入文件时ios::ate
和ios:app
之间的区别是什么
在我看来,ios::app
使您能够在文件中移动,而使用ios::ate
时,它只能在文件末尾读/写。这是对的吗?
答案 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
允许我们将数据添加到文件末尾。