gpt4 book ai didi

c++ - 如何检查 cin 是否为文件结尾?

转载 作者:行者123 更新时间:2023-12-03 02:40:30 25 4
gpt4 key购买 nike

int main()
{
if (cin)
{
(...)
}
else
{
cerr << "No Data!!!" << endl;
}
}

我想检查输入是否有数据,但是即使我在开头输入Ctrl+Z也不会显示错误消息。

最佳答案

在您尝试读取之前,流不会知道是否有任何有用的数据。至少您需要查看第一个字符,例如使用

if (std::cin.peek() != std::char_traits<char>::eof()) {
// do something with the potentially present input.
}
else {
// fail
}

您更有可能依赖一些可用的非空间数据。如果是这样,您可以查看文件中是否还有除空格之外的其他内容:

if (!(std::cin >> std::ws).eof())
...

操纵器 std::ws 将跳过前导空格。当到达非空白字符或到达文件末尾时它将停止。如果到达文件末尾,std::cin.eof() 将为 true

一般来说,我不会打扰,而是尝试阅读第一项。如果什么也没读,它仍然可能失败:

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
}

无数据情况可以隐式测试,例如,通过查看读取数据结构的大小。

关于c++ - 如何检查 cin 是否为文件结尾?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34274593/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com