在GameDev.net上閱讀this post後,我決定採用C++標準。有幾個std::istream
函數被標準描述爲「無格式輸入函數」(如tellg()
,read()
等)。我一直認爲「無格式輸入功能」意味着當使用「無格式輸入功能」(無論文本模式還是二進制模式)時,文本在讀取時不會被格式化(例如,"\r\n" -> "\n"
)。顯然,情況並非如此,因爲read()
方法仍將轉換爲"\r\n" -> "\n"
(如果未指定std::ios_base::binary
),儘管它是「未格式化的輸入函數」。「無格式輸入函數」究竟意味着什麼?
現在我都很困惑,因爲我顯然不明白事情是正確的。 「無格式輸入功能」究竟意味着什麼?是的,我已閱讀第27.7.2.3節第1段,它似乎談論更多關於處理錯誤的事情(儘管當然,可能我沒有正確理解它,這可能是問題的一部分) 。
我剛剛發現tellg()
沒有考慮到格式轉換的事實,而read()
確實是相當混亂。在某種程度上,它是有意義的(因爲tellg()
如果是的話就是O(n),如果read()
沒有,那麼文本/二進制模式之間的差異將遠不那麼重要)。但在另一種程度上,似乎......不一致。我認爲我的一部分困惑和觀察到的不一致可能來自我對「無格式輸入函數」的明顯誤解。
啊,我在攪拌東西,我明白了。感謝您的明確和簡單的澄清! – Cornstalks