2012-08-13 91 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

相關問題