【发布时间】:2019-12-11 21:51:56
【问题描述】:
我们可以将整个文件读入一个字符串:
std::ifstream ifs(path);
assert(ifs.good());
std::string text(std::istreambuf_iterator<char>(ifs), std::istreambuf_iterator<char>())
一旦此代码返回一个空字符串。如何检查读取过程中没有错误?
UPD:
我了解到,如果一个文件正在被写入(或刚刚被覆盖),那么当我读取该文件时,std::filesystem::file_size 可能返回 0,并且 ifstream 从 operator bool 返回 true(在 Windows )。所以文件在一段时间内不可用,但我没有收到任何错误,我无法将这种情况与真正的空文件情况区分开来。所以我必须在一个循环中读取一个文件,而它的大小是 0 一段时间。
【问题讨论】:
标签: c++