将打开的文件的ios_base从'out'更改为'app'而不关闭文件

Change ios_base of open FILE from 'out' to 'app' without closing the FILE

本文关键字:文件 app out base 将打开 ios      更新时间:2023-10-16

是否有可能在c++中改变打开的FILE*的输出模式而不关闭并重新打开它?
我在std::ios_base::out模式下打开了FILE*,并希望以更优雅的方式切换到std::ios_base::app

如果您想在文件末尾写入,只需查找到文件末尾,这是更简单的解决方案。

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

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