当我进入退出条件时,为什么程序打印两次默认条件而不是退出while循环?

Mic*_*ato 1 c++ while-loop switch-statement visual-c++

我是初学者,我从一本书中复制了这段代码,但是它不起作用,因为当我输入EOF时,程序而不是退出while循环会打印两次默认消息.这就像一个小时,我寻找一个解决方案,但我尝试过的任何工作,谢谢你的帮助.该计划应该计算每种等级的数量.

#include "stdafx.h"
#include <iomanip>
#include <iostream>
#include <math.h>
#include <ctype.h>

using namespace std;


int main()
{ 

    int grade,
        aCount = 0,
        bCount = 0,
        cCount = 0,
        dCount = 0,
        fCount = 0;



    cout << "Enter the letter grades (EOF to quit) ->>";

    while ((grade = cin.get()) != 'EOF')  {

        switch (grade) {

        case 'A':
            ++aCount;
            break;

        case 'B':
            ++bCount;
            break;

        case 'C':
            ++cCount;
            break;

        case 'D':
            ++dCount;
            break;

        case 'F':
            ++fCount;
            break;

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

        default :
            cout << "Invalid letter grade entered. Enter a new grade." << endl;
            break;

        }
    }
Run Code Online (Sandbox Code Playgroud)

Lig*_*ica 6

文档cin.get()告诉我们您正在寻找的返回条件是EOF.

while ((grade = cin.get()) != EOF)  {
Run Code Online (Sandbox Code Playgroud)

就是这样 - 没有引号!它是一个扩展为整数的宏.你所做的是写一个"多字节字符文字" 'EOF',它具有实现定义的含义,在这里没有真正的相关性.

你从书中复制错了,或者书是错的.