ifstream以二进制模式打开是否需要ios ::?

cat*_*_cd 7 c++ ifstream

这两者有什么区别?是不是in标志物的事多余?谢谢.

std::ifstream file1("one.bin", std::ifstream::in | std::ifstream::binary);

std::ifstream file2("two.bin", std::ifstream::binary);

Des*_*ume 5

ifstream类构造函数的文档:

二进制 (二进制)将流视为二进制而不是文本.
in (输入)允许对流进行输入操作.

所以当从文件中读取时,我会使用std::ifstream::inflag而不是因为它是必需的(或者不是),但是因为让编程接口知道你将要使用它是一个很好的编程习惯.

编辑:
以下内容摘自http://www.cplusplus.com/doc/tutorial/files/,关于open()成员函数(但问题代码中的构造函数可能会调用open()复制模式标志而不进行修改).

class: 默认模式参数
ofstream:ios :: out
ifstream:ios :: in
fstream:ios :: in | IOS ::出来

对于ifstream和ofstream类,即使不包含它们的模式作为第二个参数传递给open()成员函数,也会自动并分别假设ios :: in和ios :: out.

然而,Web上的许多示例ifstream::in在显示ifstream对象的构造时使用.真的可以是某种迷信练习,而不是编程.

  • @ Naveen:是否需要让`ifstream`知道我想将其用于_input_?那么我也可以使用普通的`fstream`-这就是为什么我首先发布此问题的原因。:) (2认同)