私のコンピュータ上のファイルをデバッグしています。キーボード入力を使用するのではなく、私はそうのようなプログラムを実行しています:リダイレクトされたLinux標準入力でgetline()が機能しない
./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
がありましたが、毎回を使用しました。リダイレクトせずに値を入力すると正常に動作します。
これが出力されます。
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:
...
私は何が起こっているかを把握助けてください!
私は必要があります。! – theEpsilon
myStringは文字列か文字配列ですか? – Eugene
@Eugeneこれは、C++標準ライブラリの文字列です。 'throwAwayString'私は前のコメントで試しました – theEpsilon