我正在调试计算机上的文件。除了使用键盘输入,我运行该程序,如下所示:getline()无法在重定向的Linux标准输入上工作
./main < input.txt
还有就是在我的程序代码段,看起来像这样:
do {
cout << "Type \"STOP\" when done: ";
getline(cin, myString);
cout << endl;
if (myString == "STOP") {
break;
}
cout << "Input next line: " << endl;
getline(cin, myString2);
cout << endl;
// do something with the two strings
} while (myString != "STOP");
而不是停止时,有一个线在等于"STOP"
(不含引号)的文件中,它始终保持循环。此前,有一个cin >> myInt
,但我确保在每次通话后使用cin.ignore()
。它工作正常,如果我输入的值没有重定向。
这是输出:
Type "STOP" when done:
Type "STOP" when done:
Type "STOP" when done:
Type "STOP" when done:
Type "STOP" when done:
Type "STOP" when done:
Type "STOP" when done:
...
请帮我弄清楚是怎么回事!
我应该!补充说我也尝试过'getline(cin,throwAwayString)'而不是'cin.ignore()'无济于事 – theEpsilon
是myString是字符串还是char数组? – Eugene
@Eugene它是C++标准库中的一个字符串,与'throwAwayString'我在前面的评论中试过 – theEpsilon