在C+中將整個文件讀入STD:String的最佳方法是什么?如何將文件讀入std::string,即一次閱讀整個文件?調用方應指定文本或二進制模式。該解決方案應符合標準,便攜和高效。它不應該不必要地復制字符串的數據,并且應該避免在讀取字符串時重新分配內存。這樣做的一種方法是統計文件大小,調整std::string和fread()進入std::string氏const_cast<char*>()愛德data()..這需要std::string它的數據是連續的,這是標準所不需要的,但是對于所有已知的實現似乎都是如此。更糟糕的是,如果文件是以文本模式讀取的,則std::string其大小可能不等于文件的大小。一個完全正確、符合標準和可移植的解決方案可以使用std::ifstream氏rdbuf()變成std::ostringstream從那里變成一個std::string..但是,這可能會復制字符串數據和/或不必要地重新分配內存。所有相關的標準庫實現是否都足夠聰明,以避免所有不必要的開銷?還有別的辦法嗎?我是否錯過了一些已經提供了所需功能的隱藏的Boost函數?請給出你的建議如何實施。void slurp(std::string& data, bool is_binary)考慮到上述討論。
- 3 回答
- 0 關注
- 1007 瀏覽
添加回答
舉報
0/150
提交
取消