将打开文件的ios#U基从';输出';至';app&x27;不关闭文件 < C++ >是否可以在不关闭和重新打开的情况下更改打开的文件> 的输出模式? 我有一个文件*以std::ios_base::out模式打开,我想以更优雅的方式切换到std::ios_base::app

将打开文件的ios#U基从';输出';至';app&x27;不关闭文件 < C++ >是否可以在不关闭和重新打开的情况下更改打开的文件> 的输出模式? 我有一个文件*以std::ios_base::out模式打开,我想以更优雅的方式切换到std::ios_base::app,c++,io,C++,Io,如果要在文件末尾写入,只需查找文件末尾,这是一个更简单的解决方案 在POSIX系统(包括linux、unix等)上,也很可能在Windows上,一旦文件被打开,就不可能更改其打开模式。因此,您必须关闭它并重新打开它 如果您的操作系统有一些特殊性允许这样做,而您不关心可移植性,那么您可以通过在std::filebuf子类中使用正确的系统调用,然后创建自己的std::fstream子类来实现这一点。您希望实现的是什么::out打开文件进行写入,而::app在文件末尾打开文件进行写入。如果您已经将文件

如果要在文件末尾写入,只需查找文件末尾,这是一个更简单的解决方案

在POSIX系统(包括linux、unix等)上,也很可能在Windows上,一旦文件被打开,就不可能更改其打开模式。因此,您必须关闭它并重新打开它


如果您的操作系统有一些特殊性允许这样做,而您不关心可移植性,那么您可以通过在
std::filebuf
子类中使用正确的系统调用,然后创建自己的
std::fstream
子类来实现这一点。

您希望实现的是什么
::out
打开文件进行写入,而
::app
在文件末尾打开文件进行写入。如果您已经将文件打开为
::out
,那么您就不能
fseek
到文件的末尾并开始写入吗?@DavidHope
::app
总是在文件的末尾写入,因此这与
::out
的行为并不完全相同,但我同意您的看法。