將 ASCII 檔案讀入 stdstring
std::ifstream f("file.txt");
if (f)
{
std::stringstream buffer;
buffer << f.rdbuf();
f.close();
// The content of "file.txt" is available in the string `buffer.str()`
}
該 rdbuf()
方法返回指向一個 streambuf
可經由推入 buffer
stringstream::operator<<
成員函式。
std::ifstream f("file.txt");
if (f)
{
std::string str((std::istreambuf_iterator<char>(f)),
std::istreambuf_iterator<char>());
// Operations on `str`...
}
這很好,因為需要很少的程式碼(並允許直接將檔案讀入任何 STL 容器,而不僅僅是字串),但對於大檔案來說可能會很慢。
注意 :字串建構函式的第一個引數周圍的額外括號對於防止最棘手的解析問題是必不可少的。
最後但並非最不重要的:
std::ifstream f("file.txt");
if (f)
{
f.seekg(0, std::ios::end);
const auto size = f.tellg();
std::string str(size, ' ');
f.seekg(0);
f.read(&str[0], size);
f.close();
// Operations on `str`...
}
這可能是最快的選擇(在三個提議中)。