最近在做題時發現了這樣一個問題,有些題目的數據是以單行給出的,比如(2 3 -92 234 275 -7)這樣的數列,用cin讀取不太方便(cin一般以換行結束一個數據的輸入),所以常規做法是將之轉化為字符串再行處理,但是在已知數列長度的情況下可以用以下方法讀取;
已知長度為N
for(i=0;i<N;i++)
cin>>a[i];
這種讀取方法在實現上更方便(在一個新手看來,或許STL中有更好的方法不需要知道N)
---------------------------------------------
(不需要知道N)
再加點內容吧,要不然這篇也太水了點。。。
其實可以用cin>>noskipws讀取所有字符
然后判斷讀入的字符是否是數字,如果是,那么把它放回到標准輸入流,再以普通方式讀取該數字,要用cin.putback();
具體可以這么寫
while(cin>>c;){
if(isdigit(c))///isdigit()是標准庫函數,<ctype>里還有很多非常方便的類似函數
cin.putback(c);放回去。。。
cin>>number;
}
結合其他ctype函數這個方法還可以用於其它輸入,比如符號,回車等的判斷和處理,效率上也沒有明顯下降