3

何らかの理由で、私のプログラムはコード フラグメントcin.get();cin.ignore();. if ステートメントではなく、main() スコープ内で 2 つのフラグメントが正常に動作するため、なぜこれが発生するのかわかりません。

関連するコードフラグメントは次のとおりです。

input.open(inputFileName);
if (input.fail())
{
    cout << "Error: failed to open '" << inputFileName << "'.\n\n";
    cout << "Press '' to end the program...";
    cin.get(); //cin.ignore() also does nothing.
    input.close();
    exit(1);
}

残りのソース コードは、http: //pastebin.com/xy0qMvBqにあります。

4

3 に答える 3

3
cin >> inputFileName;

そのコマンドを使用して、ユーザーは「何か」を入力し、Enter キーを押します。これにより、「もの」と改行文字が入力バッファーに入れられます。次に、「もの」がinputFileNameに保存され、改行文字がそこに残されます。これは cin.get() と cin.ignore() が読み取ったものであり、スキップされていません。

于 2012-10-24T04:48:29.360 に答える
0

あなたが投稿したコードの一部は完全に正常に機能しており、この場合 cin.get() は無視されません。

于 2012-10-24T06:26:04.073 に答える