从包含特定字符串的行开始读取

时间:2012-02-19 18:49:21

标签: c++ string inputstream seek

我正在尝试从输入文件中读取一些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,因为输入文件的那部分可能会在以后更改。)

2 个答案:

答案 0 :(得分: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
}

答案 1 :(得分: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;

将从该行读取数字。