c++eof和空行混淆
c++ eof and empty line confusion
本文关键字:c++eof 更新时间:2023-10-16
string line;
getline (cin, line);
if(line.empty() && !cin.eof()) continue;
if (cin.eof()) {
if (need_echo) cout << "^D";
cout << endl;
DEBUGF ('y', "EOF");
break;
}
为什么getline(cin, line)
扫描空行时cin.eof
为false?
因为EOF(文件结尾(与行尾不同。你可以有一个充满空行的文件,例如:只需写很多行尾字符。
"空行"是什么意思?这行是没有任何字符,还是结尾有换行符?如果该行真的是空的,std::getline()
将读取EOF并将std::ios_base::eofbit
设置为std::cin
的流状态。如果末尾有一个换行符,它就会到达输入的末尾,但它不会设置eofbit
。
相关文章:
- 如何确定我已使用非编码文件到达 EOF?
- std::ifstream::read 不会读取所有 512 字节,并设置 EOF 和失败位
- 而(!inputfile.eof())只读取第一行?
- EOF有更安全的替代方案吗?它在我的情况下不起作用
- "错误 C0000:语法错误,令牌"<EOF>"处出现意外$end,并且不确定
- 如何在 EOF 之前从文件中读取并将其放入字符串中?
- 如何在从文件中读取整数时使用 file.eof()?
- "eof"可以设置为流吗?
- 吃完 EOF 后重复使用 std::cin
- 文件处理,eof() 定义
- std::cin 在读取 EOF 并清除后不再读取
- 为什么 EOF 在循环扫描期间没有终止?
- cin.clear()是否保留EOF
- 而(getline(fin,str)){}即使在到达eof之后仍在处理数据
- 通过终端在文件中输入时检测EOF(文件结束)时出现问题
- 为什么如果我从键盘输入EOF克里昂不要在运行窗口打印程序的输出?
- 为什么"cin"在EOF之后不再wοrk?
- 在 <char>sizeof(int) == 1 的平台中如何编码 char_traits::eof() ?
- 读取 c++ istream 直到 EOF,同时丢弃内容
- 我的代码在捕获块中处理了正确的 eof 后到达 eof 时会引发 basic_ios::clear ?