std :: ios :: binary或std :: ifstream :: binary和类似的?

时间:2017-01-11 17:10:05

标签: c++ binary fstream

在C ++中搜索文件读取示例时,我注意到许多示例都使用

  • std::ios::binary vs std::ifstream::binary
  • std::ios::beg vs your_file_stream.beg
  • std::ios::end vs your_file_stream.end

这些例子有什么不同,如果没有,为什么它们都包含在STL中?

2 个答案:

答案 0 :(得分:1)

std::ios::binarystd::ifstream::binary在很大程度上取决于个人选择,但是我总是使用更“基本”的定义,只要你了解我的意思就是继承树。因此std::ios::binary是我的选择。

至于std::ios::begyour_file_stream.beg,我会对前者充满渴望:通过实例与static成员联系是毫无意义和模糊的。

答案 1 :(得分:0)

它们是相同的,因为ifstream继承自ios ...

那里没有“成语”。只是意见。

我个人的一点就是你保护代码的方式是它所使用的库中的更改将保持代码的一致性。

所以your_file_stream.end始终与your_file_stream一致,无论它是什么,然而它是由现在和将来的版本组成的。即使它恰好与其他流类型不同,也会一直有效。

如果您没有实例,std::ifstream::binary始终与ifstream保持一致,但它将在现在和将来合成。即使它与其他类型不同,也会说出来。

如果您正在编写一个采用std::ios&的多态运行时函数,那么std::ios::binary就可以了。

然而,这些东西不可能被改变,所以......它并不重要。