在寻找在C++文件读取的例子,我注意到,许多示例使用std :: ios ::二进制或std :: ifstream ::二进制和类似的?
std::ios::binary
VSstd::ifstream::binary
std::ios::beg
VSyour_file_stream.beg
std::ios::end
VSyour_file_stream.end
是否有这些任何差异例子,如果没有,为什么它们都包含在STL中?
在寻找在C++文件读取的例子,我注意到,许多示例使用std :: ios ::二进制或std :: ifstream ::二进制和类似的?
std::ios::binary
VS std::ifstream::binary
std::ios::beg
VS your_file_stream.beg
std::ios::end
VS your_file_stream.end
是否有这些任何差异例子,如果没有,为什么它们都包含在STL中?
std::ios::binary
与std::ifstream::binary
在很大程度上取决于个人的选择,但我总是使用更“基本”的定义,只要你明白我的意思,它就是继承树。因此std::ios::binary
是我的选择。
至于std::ios::beg
和your_file_stream.beg
,我很喜欢前者:通过实例达到static
成员毫无意义和模糊。
他们是相同的,因为从ios
ifstream
继承...
没有 “成语” 出现。只是意见。
我个人的观点是,你保护你的代码的方式在它使用的库中的变化将保持你的代码一致性。
所以your_file_stream.end
始终与your_file_stream
相关,不管它是什么,但它是由现在和将来的版本组成。即使它碰巧与其他流类型不同,也会始终有效。
如果您没有实例,则std::ifstream::binary
始终与ifstream
一致,但现在和将来都会进行组合。即使它与其他类型不同,也会说出来。
如果你正在编写一个采用std::ios&
的多态运行时函数,那么比std::ios::binary
还好。
然而,这些事情不太可能会改变,所以......它并不重要。
虽然这是一个很好的问题,但我认为这主要是基于意见的。它们是相同的,只是用不同的方式来引用它们。 –
我的感觉是第一部分是基于意见的,但第二部分不是。 – Bathsheba
我想你可能在你的问题上有一个错字。你真的问是否'std :: ios :: beg'和'std :: ios :: end'是一样的吗?你真的在问某件事的开始是否与某件事情的结局相同吗? –