關於c++中以空格分隔的數字數據的一種讀取方法


最近在做題時發現了這樣一個問題,有些題目的數據是以單行給出的,比如(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函數這個方法還可以用於其它輸入,比如符號,回車等的判斷和處理,效率上也沒有明顯下降


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM