我正在解析一个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;
}
有没有办法为CSV文件执行此操作?
我知道如果他们被空格隔开,这将是开箱即用的。但是对于CSV文件(或者任意分隔符)呢?
答案 0 :(得分:0)
您无法使用operator>>
指定分隔符。使用std::getline()
将分隔值读入临时std::string
,然后使用std::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;
}