将 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`...
}
这可能是最快的选择(在三个提议中)。