1. 程式人生 > >C++讀取多行數字然後讀取該行各個數字

C++讀取多行數字然後讀取該行各個數字

問題:

比如讓迴圈讀取一行數字“1 2 3;4 5 6;7 8 9;”

並且取出各個數字1,2,3,4,5,6,7,8,9

說明:輸入只有一行,以‘;’為分隔符,其實是三行數字,但是注意最後結尾有一個‘;’(如果沒有這個分號,程式碼將發生很大變化)。每行數字以空格分割。

解決:使用C++裡面的getline和sstream。程式碼如下。

#include<iostream>
#include<sstream>
#include<string>
using namespace std;
int main(){
        string line;
        string item;
        while(getline(cin,line,';')){
                istringstream items(line);
                while(items>>item){
                        cout<<item<<endl;
                }
        }
        return 0;

}

程式碼說明:

(1)getline從cin或者檔案中讀取整行字串,getline(cin,line,';')的第三個引數表示getline的終止符。

(2)istringstream 必須包括標頭檔案#include<sstream>,並且預設只能以空格、換行、製表符作為分隔符,不能想getline指定分隔符。

PS:如果輸入變為:(最後一個分號';'沒有了)

比如讓迴圈讀取一行數字“1 2 3;4 5 6;7 8 9”

則讀取程式就無法再使用getline指定分割符實現了分行讀取了(因為最後一行沒有‘;’,程式無法讀取最後一行):這個時候的思路是:

使用getline(

cin,line)讀取“1 2 3;4 5 6;7 8 9”作為一行字串到line中,然後自己寫個程式將line拆分為多個string,對每個string進行istringstream 讀取。OK。