2012-02-19 118 views
1

我試圖從輸入文件讀取一些xyz座標。 這是輸入文件我有:從包含特定字符串的行開始讀取

input.inp 

POSITIONS 
1.5 2.5 1.5 C 
3.2 1.5 4.5 C 
1.4 4.2 3.2 C 

我想寫搜索包含" C",然後開始閱讀來自該行的座標串輸入文件的功能。我如何在C++中做到這一點? (我不想搜索單詞POSITIONS,因爲那部分輸入文件可能會稍後改變)。

+0

那麼你到目前爲止嘗試了什麼? – Bart 2012-02-19 18:50:28

+0

getline,seekg,ignore等的各種組合 – Eddy 2012-02-19 18:54:51

回答

2
ifstream file("in"); 
string line; 
while (getline(file, line)) { 
    if (line.find(" C") == string::npos) 
     continue; 
    istringstream ss(line); 
    double x, y, z; 
    ss >> x >> y >> z; 
    if (!ss) 
     continue; // error 
    // ok 
} 
0

您應該閱讀所有行以string變量。分析它,如果你想讀這個號碼,你可以使用stringstream<sstream>

string a = ""; 
in >> a; 

//檢查線路是否有下在年底或其他測試,然後

stringstream b(a, stringstream::in); 

double c1=0, c2=0, c3=0; 
b >> c1 >> c2 >> c3; 

會讀來自該行的數字。

相關問題