2012-02-19 2 views
1

入力ファイルからいくつかのxyz座標を読み取ろうとしています。 これは私が持っている入力ファイルです:私は" C"を含有し、その行からの座標を読んで始まる文字列の入力ファイルを検索する機能を書きたい特定の文字列を含む行から読み始める

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++でどうやって行うのですか? (私は単語POSITIONSを検索したくない。入力ファイルのその部分が後に変わるかもしれないからだ)。

+0

これまでに何を試しましたか? – Bart

+0

getline、seekg、ignoreなどのさまざまな組み合わせ – Eddy

答えて

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; 

は行が終了または他のテストでCを持っているかどうかをチェックし、//使用することができ、その後、

stringstream b(a, stringstream::in); 

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

を読みますその行からの数字。

関連する問題