将输出文件作为输入和输出打开是什么意思?

时间:2014-01-12 16:07:55

标签: c++

我有时会看到这样的代码:

ofstream of("out.txt", ofstream::in | ofstream::out);

为什么它作为输入和输出被打开?这样做有什么意义呢?

3 个答案:

答案 0 :(得分:2)

有时需要读取文件,进行一些处理,然后使用一些新信息更新原始文件。打开输入和输出文件可以在不关闭和重新打开的情况下执行此操作。

它也明确了一个人对文件的意图。

编辑:我的原始答案没有考虑OP的示例使用ofstream而不是fstream。所以...

ofstreamstd::in一起使用没有任何意义。是否在流上执行了读取操作?如果不是,最初编写的代码可能使用fstream,后来更改为ofstream。这种情况可能会蔓延到处于维护模式的代码库中。

答案 1 :(得分:1)

由于您正在使用ofstream,因此您无法在流上使用任何输入功能。然后以读写模式打开文件并不是有害的,但 毫无意义,除非您开始使用基础流进行黑客攻击。

它可能是样板,从互联网上的一些教程中复制/粘贴,而作者实际上并没有理解它。

答案 2 :(得分:0)

这对实际的流没有任何意义。 std::ios_base::in openmode将被忽略。但是对于底层流缓冲区,它 意味着要打开输入和输出的东西:例如,文件流和字符串流缓冲区允许回放功能,但它只能在缓冲区'{ {1}}指定输出。