如何在C ++中正确解析CSV文件?

时间:2019-04-10 02:34:14

标签: c++ c++11 visual-c++

我有一个CSV文件,其内容类似于:

1,2,3,4,5
"f[0, 0] + f[0, 1]",5,10,0,2

我意识到CSV文件中的引号与CSV文件并不完全“对”。但是,这是我得到的格式。引号中的功能旨在充当CSV文件中数字的引用。例如,[0,0]表示1,类似于2D数组的工作方式。 [0,1]表示2,因此1 + 2 =3。我的评估工作正常,我只需要一种方法来解析这些行。

使用我现在拥有的代码,它用逗号分割文件,但是当它到达“ f [0,0] + f [0,1]”时,它将这些分割成:

"f[0
0] + f[0
 1]"

因为有逗号。

这是我目前必须在CSV文件中读取的代码:

string line;
string field;

vector<vector<string>> v_array;
vector<string> v;

// fills the 2D array up
while (getline(file, line))
{
    v.clear(); // clears to add the next line
    stringstream ss(line);

    while (getline(ss, field, ',')) // this is probably the problem, but idk how to work around it
    {
        v.push_back(field);
    }

    v_array.push_back(v);
}

如果我运行已有的代码并逐行解析CSV文件,它将得到类似于以下内容的信息:

1
2
3
4
5

"f[1
 1] + f[1
 2]"
5
10
0
2

基本上,如果一切正常,该文件将如下所示:

1,2,3,4,5
3,5,10,0,2

0 个答案:

没有答案