我有一个CSV文件,其中包含带有折线(“\ n”)的单元格和/或用双引号括起来的逗号。 当我使用getline()函数获取每一行时,它将单元格内的每一行视为csv文件的新行。另外,当使用splitIntoVec获取每一行的向量时,它将一个单元格内的逗号作为一个新的向量元素进行调整。 我想将csv文件的内容存储到向量中,每行是其单元格内的字符串向量。如何在C++中使用换行符和逗号字符读取CSV文件
例如,对于以下csv文件内容
"Row 1 cell 1
With break line","Row1 cell2, with comma"
"Row 2 cell 1
With break line","Row2 cell2, with comma"
Row 3 cell 1,Row3 cell 2
我得到4个矢量的结果矢量,其第一个仅具有一个元素,第二个具有3个元件。 这里是我的代码:
vector<vector<string>> readFromCsv(string &fileName, char rowDelimiter = "\n", char colDelimiter = ",") {
ifstream file(fileName); // declare file stream
string value;
vector<vector<string>> contentVec;
vector<string> rowVec;
string rowStr;
while (getline(file, rowStr, rowDelimiter)) {
rowVec = splitIntoVec(rowStr, colDelimiter);
contentVec.push_back(rowVec);
}
return contentVec;
}
是否有任何其他功能(像Boost库),可用于解决这些问题?任何帮助,将不胜感激。
在PHP中,我通过fgetcsv()正确获取csv文件的内容。在C++中有没有其他的函数?
你正在尝试解析不是一个CSV。 CSV语法由[RFC4180](https://tools.ietf.org/html/rfc4180)定义,文档的第一点指出:“每条记录位于一个单独的行上,由换行符(CRLF) ' –
单元格内的双引号怎么样? – DAle
@SimoneCifani我使用的csv文件是由PHP创建的。另外,我已经通过excel和Libreoffice创建了逗号分隔的csv文件,但仍然看到了相同的结果。 – Aref