c++ - 在不关闭文件的情况下,将打开的文件的 ios_base 从 'out' 更改为 'app'

标签 c++ io

是否可以在 C++ 中更改打开的 FILE* 的输出模式而无需关闭并重新打开它?
我有一个以 std::ios_base::out 模式打开的 FILE* 并且想切换到 std::ios_base::app一种更优雅的方式。

最佳答案

如果你想写在文件的末尾,简单地寻找文件的末尾,这是更简单的解决方案。

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

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

关于c++ - 在不关闭文件的情况下,将打开的文件的 ios_base 从 'out' 更改为 'app',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15274444/

相关文章:

c++ - 在 C 上使用 C++ 时是否有大量额外开销?

C++11:decltype((x)) 和 decltype((x+1)) 的类型不同?

python - 读取带有开始/结束标签的结构化数据

java - PrintWriter 不允许我进入特定目录

io - 将固定宽度字段写入 Julia 中的流?

c++ - 函数声明有什么问题?

c++ - 为什么 __builtin_parity 是相反的?

c++ - 将字符数组中的字符连接成一个整数

python - 将新行添加到输出文件python

java - 它们是完全相同的方法,但一种有效,另一种无效