2

我正在使用 Windows 7 旗舰版。我是 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;
        }

    }
}

我在netbeans中运行它,我按下了所有组合 ctrl+c , ctrl+z , ctrl+d 但它没有结束!这是为什么?我做错了什么吗?请帮忙!!

4

2 回答 2

2

cin.get() 是相当低的水平。代码应该使用更高级别的接口。它应该一次读取一个字符,所以这样写:

char grade;
while (cin >> grade)

流提取器将在文件末尾失败,这将使 while 循环终止。

于 2012-08-13T16:01:22.920 回答
2

在 Windows 平台上,EOF 字符是 Ctrl+Z 后跟换行符。

据推测,Netbeans 中的控制台也是如此。

于 2012-08-13T16:27:29.817 回答