执行命令:
./program < input.txt
Run Code Online (Sandbox Code Playgroud)
使用以下代码检查:
string input;
while(cin) {
getline(cin, input);
}
Run Code Online (Sandbox Code Playgroud)
上面的代码似乎生成一个额外的getline()
调用,其中输入为空.无论\n
input.txt的最后一行是否有a ,都会发生这种情况.
@Jacob有正确的解决方案但由于某种原因删除了他的答案.这是循环中发生的事情:
cin
检查是否有任何故障位(BADBIT,FAILBIT)cin
报告没有问题,因为尚未从文件中读取任何内容.getline
被调用,它检测文件结束,设置EOF位和FAILBIT.你需要做这样的事情:
std::string input;
while(std::getline(std::cin, input))
{
//Have your way with the input.
}
Run Code Online (Sandbox Code Playgroud)