2017-05-22 156 views
1
#include <iostream> 
using namespace std; 

int main() 
{ 
    int sum = 0; 

    cout << "Please input a series of integers and any number of spaces: "; 

    int i; 
    while(cin >> i) 
    { 
     sum += i; 
     while(cin.peek() == ' ') // isolate spaces 
     { 
      cin.get(); 
     } 

     if(cin.peek() == '\n') // when press "enter" 
     { 
      break; // get out of loop 
     } 
    } 

    cout << "The result is: " << sum << endl; 
    cin.get(); 
    return 0; 

} 

以上是我的代碼。我嘗試使用cin.get()在控制檯窗口中顯示結果,但它不起作用。它揭示了一個窗口閃光。C++:如何在控制檯窗口中顯示結果

回答

5

peek查看輸入中是否有換行符。如果這是你將它留在輸入緩衝區並跳出循環,你的cin.get()調用將讀取該換行符。


如果你只是想讀一個單一的線,那麼我建議你使用std::getline讀取線,把它變成一個std::istringstream,並從該流讀取的數字。

另請注意,當使用>>讀取數字時,會讀取並丟棄前導空格,因此您不必檢查該數字。

+0

感謝您的回答。但是,我仍然感到困惑,我無法從控制檯窗口看到結果。 – FortranFun

+1

@FortranFun要修正你顯示的代碼,而不作任何其他改變,一旦你看到換行符,你必須*讀*(並放棄)它。這將迫使用戶爲最後的'cin.get()'調用輸入另一個換行符。換句話說,你必須在'break'語句之前添加'cin.get()'調用。 –

相關問題