首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C++文件处理: ios::app和ios::ate?

C++文件处理: ios::app和ios::ate?
EN

Stack Overflow用户
提问于 2012-04-28 09:12:06
回答 6查看 95.7K关注 0票数 77

在写入文件时,ios::ateios:app有什么不同。

在我看来,ios::app使您能够在文件中移动,而使用ios::ate,它只能在文件末尾进行读/写。这是正确的吗?

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2012-04-28 09:17:06

情况正好相反。设置ios::ate时,初始位置将是文件的末尾,但此后您可以自由查找。设置ios::app时,所有输出操作都在文件末尾执行。由于所有写入都隐式地在寻道之前,因此无法在其他地方写入。

票数 83
EN

Stack Overflow用户

发布于 2012-04-28 09:16:30

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

app seek在每次写入之前结束

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

使用ios::app,文件中的写入位置是“粘性的”--无论您在哪里查找,所有的写入都在末尾。

票数 41
EN

Stack Overflow用户

发布于 2012-04-28 09:21:09

这是一个很好的文档化here

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

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

这意味着不同之处在于,当您打开文件时,ios::ate会将您的位置放在文件的末尾。相反,每次刷新数据流时,ios::app都会将其放在文件的末尾。例如,如果您有两个程序写入同一日志文件,则ios::ate将覆盖自您的程序打开该文件以来由另一个程序添加到该文件中的任何内容。每次你的程序添加一个日志条目时,ios:app都会跳到文件的末尾。

票数 32
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10359702

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档