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 文件(或任意分隔符)呢?
您不能使用 指定分隔符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)