2012-08-13 87 views
2

我正在使用Windows 7旗舰版。我是C++新手。以下是我对switch语句的练习。什么是C++中的EOF密钥

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,但它没有结束!这是为什么?我做错了什么?请帮忙!!

+0

我认为你的问题不是关于EOF,而是关于它的:http://en.wikipedia.org/wiki/End-of-file – slaphappy 2012-08-13 15:57:49

+1

Control + Z或F6。通常需要单独输入一行,因此基本上按Ctrl + Z或F6进行输入。 – 2012-08-13 16:03:15

+0

嗯..仍然没有工作..你确定它在netbeans中工作吗?否则,将参数测试更改为-1不是更好吗?所以,当用户输入-1时,它会中断。 – 2012-08-13 16:30:26

回答

2

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

大概这对Netbeans中的控制台是一样的。

2

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

char grade; 
while (cin >> grade) 

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

+0

这并没有改变任何东西。这里的问题是关于如何“输入”输入的结尾。 – 2012-08-13 16:03:00

+0

你说得对,它解决了一个不同的问题。 2012-08-13 16:05:32

+0

这是一个有用的答案,但它是错误的答案。我不确定我是应该投票还是低投票。 – 2012-08-13 16:06:37

相关问题