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

Start reading from a line containing a specific string

本文关键字:开始 读取 字符串 包含特      更新时间:2023-10-16

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

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
}

您应该读取string变量的所有行。分析它,如果你想读取这些数字,你可以使用stringstream<sstream>

string a = "";
in >> a;

//检查线路末端是否有C或其他测试,然后检查

stringstream b(a, stringstream::in);
double c1=0, c2=0, c3=0;
b >> c1 >> c2 >> c3;

将读取该行的数字。