2

Windows 7 Ultimate を使用しています。私はC++が初めてです。以下は、switch ステートメントの演習です。

void GradeBook::inputGrades()
{
    int grade;

    cout << "Enter Grade: " << endl;

    while((grade=cin.get()) != EOF)
    {
       switch(grade)
        {
            case 'A':
            case 'a':
                aCount++;
                break;

            case 'B':
            case 'b':
                bCount++;
                break;

            case 'C':
            case'c':
                cCount++;
                break;

            case 'd':
            case 'D':
                dCount++;
                break;

            case 'F':
            case 'f':
                fCount++;
                break;

           case '\n':
           case ' ':
           case '\t':
               break;

            default:
                cout << "Incorrect data. Re Enter" << endl;
                break;
        }

    }
}

これをネットビーンズ内で実行し、すべての組み合わせ ctrl+c 、 ctrl+z 、 ctrl+d を押しましたが、終了していません!! 何故ですか?私は何か間違ったことをした?助けてください!!

4

2 に答える 2

2

EOF文字は、WindowsプラットフォームではCtrl+Zの後に改行文字が続きます。

おそらく、それはNetbeans内のコンソールでも同じです。

于 2012-08-13T16:27:29.817 に答える
2

cin.get() はかなり低レベルです。コードは、より高いレベルのインターフェイスを使用する必要があります。一度に 1 文字ずつ読み取る必要があるため、次のように記述します。

char grade;
while (cin >> grade)

ストリーム エクストラクタはファイルの最後で失敗し、while ループが終了します。

于 2012-08-13T16:01:22.920 に答える