1. 程式人生 > >如何使用C++進行多組輸入

如何使用C++進行多組輸入

我們在做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  寢室