2014-02-11 65 views
1

我希望從輸入數量未知的控制檯進行輸入。我所知道的是他們小於或等於10.如果輸入數量未知,則進行輸入

我寫了這段代碼,但它計算了兩次最後的值。

int x; 
    do{ 
     cin>>x; 
     cout<<check(x)<<"\n"; 
    }while(std::cin); 

的輸入是這種形式:

12 
2 
45 

回答

2

由於@LightnessRacesinOrbit評論說,這是while(!eof) bug again。你應該從之後檢查流狀態,而不是之前

可以在while -condition使用cin>>x和應用的特殊值(即任何非數字)作爲這樣結束標誌:

while (cin >> x) 
{ 
    // got a value 
} 
+0

這個方案需要一個標記值,因爲'cin'會在最後一個值等待用戶輸入後掛起一些東西。 –

+0

謝謝。愚蠢的錯誤。 – user3250183

+0

@MatthieuM。更新。謝謝。 – herohuyongtao

0

您可以使用的IStream :: geline。

char input[1024] 
std::cin.getline (input,1024); 

閱讀該行後,必須將其用空格分隔。只是忽略第十一個分裂。並且你可以在分割(some_split.c_str())上應用atoi或類似的函數來獲取數值

+0

請注意,OP的示例有多行。 –

相關問題