如何在C ++中逐行解析.dat文件

时间:2018-11-08 22:38:12

标签: c++

所以我正在尝试从文件中解析一些数据。该程序应该查看每行的第三个值,如果字符串等于“比较”,则查看该行的每个最后一个值,并存储所有行的最小值和最大值。但是,当我尝试编译它时,出现以下错误:

  std::stringstream lineStream(line);

,并且在将字符串转换为浮点数以比较和存储最后一个值和最小值时:

   strtof(Value);

这是我的代码:

using String = std::string;

int main(int argc, const char * argv[]) {
  std::ifstream inputFileStream;
  inputFileStream.open("data.dat");

  if(!inputFileStream.is_open()){
    std::cout<<"error";
    return 0;
  }

  int count;
  inputFileStream>>count;
  inputFileStream.ignore(1, '\n');

  String minValue;
  String maxValue;

  for(int i = 0; i < count; i++){
    String line;
    std::getline(inputFileStream, line);
    std::stringstream lineStream(line);

    String first;
    String second;
    String third;

    std::getline(lineStream, first, ',');
    std::getline(lineStream, second, ',');
    std::getline(lineStream, third, ',');

    String compare="compare";

    if(Line_Identifier->compare(compare)==0){

        String last;

        std::getline(lineStream,last, ',');

        if(strtof(last)>strtof(maxValues)){
            maxValues=Value;

        }
        else if(strtof(Value)<strtof(minValues)){
            minValues=Value;
        }
    }
}
 return 0;
}

1 个答案:

答案 0 :(得分:2)

您应该使用“输入字符串流” std::istringstream

std::istringstream lineStream(line);

对于strtof,您应该使用std::strtof