【问题标题】:Start reading from a line containing a specific string从包含特定字符串的行开始读取
【发布时间】:2012-03-10 06:13:46
【问题描述】:

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

【问题讨论】:

  • getline、seekg、ignore等多种组合

标签: c++ string inputstream seek


【解决方案1】:

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

string a = "";
in >> a;

//检查行尾是否有C或其他测试然后

stringstream b(a, stringstream::in);

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

将从该行读取数字。

【讨论】:

    【解决方案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
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-30
      • 1970-01-01
      • 1970-01-01
      • 2012-12-28
      相关资源
      最近更新 更多