在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中?
答案 0 :(得分:1)
std::ios::binary
与std::ifstream::binary
在很大程度上取决于个人选择,但是我总是使用更“基本”的定义,只要你了解我的意思就是继承树。因此std::ios::binary
是我的选择。
至于std::ios::beg
和your_file_stream.beg
,我会对前者充满渴望:通过实例与static
成员联系是毫无意义和模糊的。
答案 1 :(得分:0)
它们是相同的,因为ifstream
继承自ios
...
那里没有“成语”。只是意见。
我个人的一点就是你保护代码的方式是它所使用的库中的更改将保持代码的一致性。
所以your_file_stream.end
始终与your_file_stream
一致,无论它是什么,然而它是由现在和将来的版本组成的。即使它恰好与其他流类型不同,也会一直有效。
如果您没有实例,std::ifstream::binary
始终与ifstream
保持一致,但它将在现在和将来合成。即使它与其他类型不同,也会说出来。
如果您正在编写一个采用std::ios&
的多态运行时函数,那么std::ios::binary
就可以了。
然而,这些东西不可能被改变,所以......它并不重要。