字符串流定界符

Ili*_*eit 1 c++ string parsing stream

我正在解析一个 CSV 文件,该文件具有已知的string,int,int,double.

我正在编写一个逐行解析 CSV 文件的函数。我正在尝试设计它,使其看起来像这样:

void foo(const string& csvline){
  std::stringstream csvStream(csvline);
  std::string s; int i1; int i2; double d;
  csvline >> s;
  csvline >> i1;
  csvline >> i2;
  csvline >> d;
}
Run Code Online (Sandbox Code Playgroud)

有没有办法对 CSV 文件执行此操作?

我知道如果它们之间用空格分隔,那么这将是开箱即用的。但是对于 CSV 文件(或任意分隔符)呢?

Rem*_*eau 5

您不能使用 指定分隔符operator>>。用于std::getline()将分隔值读入 temp std::string,然后使用 astd::istringstream解析字符串。

void foo(const std::string& csvline)
{
    std::istringstream csvStream(csvline);
    std::string s, tmp;
    int i1, i2;
    double d;

    std::getline(csvStream, s, ',');

    std::getline(csvStream, tmp, ',');
    std::istringstream(tmp) >> i1;

    std::getline(csvStream, tmp, ',');
    std::istringstream(tmp) >> i2;

    std::getline(csvStream, tmp);
    std::istringstream(tmp) >> d;
}
Run Code Online (Sandbox Code Playgroud)