我正在調試計算機上的文件。除了使用鍵盤輸入,我運行該程序,如下所示: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