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;
}
cin.eof
扫描空行时,为什么getline(cin, line)
为假?
答案 0 :(得分:1)
因为EOF(文件结束)与行尾不同。你可以有一个填充空行的文件,例如:只需写下许多行尾字符。
答案 1 :(得分:0)
你是什么意思&#34;空行&#34;?该行是否没有任何字符,或者它最后是否有换行符?如果该行真的为空std::getline()
,则会读取EOF并在std::ios_base::eofbit
的流状态中设置std::cin
。如果最后有换行符,它会到达输入的结尾,但不已设置eofbit
。