在写入文件时,ios::ate和ios:app有什么不同。
在我看来,ios::app使您能够在文件中移动,而使用ios::ate,它只能在文件末尾进行读/写。这是正确的吗?
发布于 2012-04-28 09:17:06
情况正好相反。设置ios::ate时,初始位置将是文件的末尾,但此后您可以自由查找。设置ios::app时,所有输出操作都在文件末尾执行。由于所有写入都隐式地在寻道之前,因此无法在其他地方写入。
发布于 2012-04-28 09:16:30
它们指定如下(在C++11的27.5.3.1.4中):
appseek在每次写入之前结束
ate打开并在打开后立即寻求结束
使用ios::app,文件中的写入位置是“粘性的”--无论您在哪里查找,所有的写入都在末尾。
发布于 2012-04-28 09:21:09
这是一个很好的文档化here。
ios::ate“在打开时将流的位置指示器设置为流的末尾。”
ios::app“在每次输出操作之前,将流的位置指示器设置为流的末尾。”
这意味着不同之处在于,当您打开文件时,ios::ate会将您的位置放在文件的末尾。相反,每次刷新数据流时,ios::app都会将其放在文件的末尾。例如,如果您有两个程序写入同一日志文件,则ios::ate将覆盖自您的程序打开该文件以来由另一个程序添加到该文件中的任何内容。每次你的程序添加一个日志条目时,ios:app都会跳到文件的末尾。
https://stackoverflow.com/questions/10359702
复制相似问题