C ++文件操作:ios:app和ios之间的区别:吃了吗?
写入文件时, ios::ate
和ios:app
什么区别?
在我看来, ios::app
让你能够在文件中移动,而使用ios::ate
它只能在文件末尾读/写。 它是否正确?
这是相反的方式。 当ios::ate
被设置时,初始位置将会是文件的结尾,但是你可以自由地在其后寻找。 当设置ios::app
, 所有的输出操作都在文件的末尾执行。 由于所有的写作都隐含在寻找之前,因此无法在其他地方写入。
它们被指定如下(在C ++ 11的27.5.3.1.4中):
app
试图在每次写入之前结束开放后立即结束并试图结束
使用ios::app
时,文件中的写入位置是“粘性的” – 所有的写入都在最后,无论你在哪里寻找。
这里logging的相当不错。
ios::ate
“将stream的位置指示符设置为打开时stream的结尾。
ios:app
“在每个输出操作之前将stream的位置指示符设置到stream的末尾。
这意味着ios::ate
在您打开文件时将您的位置放在文件末尾的区别。 每次刷新stream时, ios::app
会将其放在文件末尾。 例如,如果两个程序写入相同的日志文件ios:ate
将覆盖从程序打开它以来被其他程序添加到文件的所有内容。 每次您的程序添加日志条目时, ios:app
都会跳转到文件末尾。
应用程序:
我们不能移动指针,它只会在最后
吃:
我们可以将logging指针移动到任何其他地方