C++ 如何检查cin是否为文件结尾? intmain() { 如果(cin) { (...) } 其他的 { cerr
在您尝试读取之前,流将不知道是否有任何有用的数据。至少您需要查看第一个字符,例如,使用C++ 如何检查cin是否为文件结尾? intmain() { 如果(cin) { (...) } 其他的 { cerr,c++,C++,在您尝试读取之前,流将不知道是否有任何有用的数据。至少您需要查看第一个字符,例如,使用 int main() { if (cin) { (...) } else { cerr << "No Data!!!" << endl; } } 操纵器std::ws将跳过前导空格。当到达非空格字符或文件结尾时,它将停止。如果到达文件结尾,std::cin.eof()将为true 总的来说,我不会费心去读
int main()
{
if (cin)
{
(...)
}
else
{
cerr << "No Data!!!" << endl;
}
}
操纵器std::ws
将跳过前导空格。当到达非空格字符或文件结尾时,它将停止。如果到达文件结尾,std::cin.eof()
将为true
总的来说,我不会费心去读第一条。如果没有读到任何东西,失败仍然是可行的:
if (!(std::cin >> std::ws).eof())
...
无数据情况可能是隐式可测试的,例如,通过查看读取数据结构的大小。我不想在开始时从cin读入,因为第一个条目可能有用。可能重复的可能重复
if (!(std::cin >> std::ws).eof())
...
bool hasData = false;
while (std::cin >> some >> data) {
hasData = true;
// do something with the input
}
if (!hasData) {
// report that there was no data at all
}