使用"ifstream","stringstream"和"rdbuf()"将文件内容读入字符串时如何检查I/O错误?

gab*_*lin 6 c++ io error-handling

我正在使用以下方法将文件的内容读入字符串:

std::ifstream t("file.txt");
std::stringstream buffer;
buffer << t.rdbuf();
std::string data(buffer.str());
Run Code Online (Sandbox Code Playgroud)

但是,如何检查I/O错误并确保实际读取了所有内容?

ava*_*kar 6

您可以像使用任何其他插入操作一样执行此操作:

if (buffer << t.rdbuf())
{
    // succeeded
}
Run Code Online (Sandbox Code Playgroud)

如果从中提取t.rdbuf()或插入buffer失败,failbit将被设置为开启buffer.