C++:尝试解析 csv 文件,但无法让 stringstream 正常工作

问题描述

我有一个包含两行的 csv 文件。第一行是列名。第二行是数据。输入文件如下所示。

This is column 1.,This is column 2.,This is column 3.,John,15,3.2

这是代码

#include <fstream>
#include <iostream>
#include <string>
#include <sstream>

int main()
{
  std::ifstream iFile("input_file.csv");
  if (!iFile.is_open())
    throw std::runtime_error("Could not open file");

  if (iFile.good())
  {
    std::string line;
    std::getline(iFile,line);
    std::stringstream ss(line);

    std::string column_name;
    while (std::getline(ss,column_name,','))
    {
      std::cout << column_name << std::endl;
    }

    std::getline(iFile,line);
    std::cout << "line= " << line << std::endl;

    ss.str(line);
    std::string name;
    std::getline(ss,name,');
    std::cout << "name= " << name << std::endl;
  }

  iFile.close();
}

对于上面的代码,column_name 打印正确。第二行也是正确的。但是,名称打印错误

根据我的测试,ss.str(line); 不起作用。我必须使用另一个字符串流。

    std::stringstream ss1(line);
    std::string name;
    std::getline(ss1,');

然后就可以了,但我想知道为什么,因为在我的其他代码中它运行良好(如下)。

  std::string line = "nick,22,1.57";
  std::stringstream ss(line);
  std::string name;
  std::getline(ss,');
  std::cout << name << std::endl;

  line = "john,23,1.76";
  ss.str(line);
  std::getline(ss,');
  std::cout << name << std::endl;

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)