在尋找在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'是一樣的嗎?你真的在問某件事的開始是否與某件事情的結局相同嗎? –