如何使用C++進行多組輸入
阿新 • • 發佈:2018-12-30
我們在做OJ題的時候經常遇到多組輸入,執行到檔案結束
常見的C語言寫法是這樣
while(scanf("%d", &n) != EOF){
/*
code
*/
}
或者這樣
while(~scanf("%d", &n)){
/*
*code
*/
}
這樣似乎是不是太“繁瑣”了呢
如果使用C++,則程式碼是這樣子
while(cin >> n){
/*
*code
*/
}
看上去是不是清爽了很多呢
那麼,它的原理是什麼呢?
cin >> n
此表示式從標準輸入讀取一個數,將其儲存在n裡,輸入運算子(>>)返回其左側物件,在這裡是cin,因此,此迴圈實際上檢測的是cin
當我們使用一個istream物件作為條件時,其效果是檢測流的狀態。如果流是有效的,即流未遇到錯誤。當遇到檔案結束符,或遇到一個無效輸入,istream物件的狀態會變為無效。處於無效狀態的istream物件會使條件變為假。
因此,我們的while迴圈會一直執行到遇到檔案結束(或無效輸入)。
注意:使用C++的輸入,所用時間會比scanf()慢一點兒,某些題如果輸入量比較大,可能會超時。
2018.12.30 11:49 寢室