2012-02-19 2 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

+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; 

가 읽을 것인가 그 줄의 번호.