我有时会看到这样的代码:
ofstream of("out.txt", ofstream::in | ofstream::out);
为什么它作为输入和输出被打开?这样做有什么意义呢?
答案 0 :(得分:2)
有时需要读取文件,进行一些处理,然后使用一些新信息更新原始文件。打开输入和输出文件可以在不关闭和重新打开的情况下执行此操作。
它也明确了一个人对文件的意图。
编辑:我的原始答案没有考虑OP的示例使用ofstream
而不是fstream
。所以...
将ofstream
与std::in
一起使用没有任何意义。是否在流上执行了读取操作?如果不是,最初编写的代码可能使用fstream
,后来更改为ofstream
。这种情况可能会蔓延到处于维护模式的代码库中。
答案 1 :(得分:1)
由于您正在使用ofstream
,因此您无法在流上使用任何输入功能。然后以读写模式打开文件并不是有害的,但 毫无意义,除非您开始使用基础流进行黑客攻击。
它可能是样板,从互联网上的一些教程中复制/粘贴,而作者实际上并没有理解它。
答案 2 :(得分:0)
这对实际的流没有任何意义。 std::ios_base::in
openmode将被忽略。但是对于底层流缓冲区,它 意味着要打开输入和输出的东西:例如,文件流和字符串流缓冲区允许回放功能,但它只能在缓冲区'{ {1}}指定输出。