C++讀取多行數字然後讀取該行各個數字
阿新 • • 發佈:2018-12-31
問題:
比如讓迴圈讀取一行數字“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。