【问题标题】:what is EOF key in C++C ++中的EOF键是什么
【发布时间】:2012-08-13 15:54:17
【问题描述】:

我使用的是 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;
        }

    }
}

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

【问题讨论】:

  • 我认为你的问题不是关于 EOF,但这里是关于它的:en.wikipedia.org/wiki/End-of-file
  • Control+Z 或 F6。一般需要单独输入一行,所以基本上输入后跟Control+Z或者F6。
  • 嗯..仍然无法正常工作..您确定它在 netbeans 中工作吗?否则,将参数 test 更改为 -1 不是更好吗?因此,当用户输入 -1 时,它将中断。

标签: c++ io


【解决方案1】:

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

大概对于 Netbeans 中的控制台也是如此。

【讨论】:

    【解决方案2】:

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

    char grade;
    while (cin >> grade)
    

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

    【讨论】:

    • 这不会改变任何事情。这里的问题是关于如何“键入”输入的结尾。
    • 这是一个有用的答案,但它是错误的答案。我不确定我应该投赞成票还是反对票。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-30
    • 1970-01-01
    • 2016-09-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多