C++将CSV文件读取到一个二维vector数组内
时间: 2023-08-19 11:05:08 浏览: 437
可以使用C++的标准库函数`getline()`和`stringstream`来实现。以下是示例代码:
```c++
#include <iostream>
#include <fstream>
#include <sstream>
#include <vector>
int main() {
std::ifstream file("data.csv"); // 打开CSV文件
std::vector<std::vector<std::string>> data; // 定义二维vector数组
std::string line;
while (std::getline(file, line)) { // 逐行读取CSV文件
std::vector<std::string> row;
std::stringstream ss(line);
std::string cell;
while (std::getline(ss, cell, ',')) { // 逐个单元格读取每行数据
row.push_back(cell);
}
data.push_back(row); // 将每行数据存入二维vector数组
}
file.close(); // 关闭CSV文件
// 打印二维vector数组
for (const auto& row : data) {
for (const auto& cell : row) {
std::cout << cell << " ";
}
std::cout << std::endl;
}
return 0;
}
```
在上述代码中,我们首先定义了一个二维vector数组`data`来存储CSV文件的数据。然后通过`std::ifstream`打开CSV文件,逐行读取文件中的数据,将每行数据存入一个一维vector数组`row`中。在遍历每行数据时,我们使用`stringstream`将每行数据按`,`分隔成多个单元格,并将它们存入`row`中。最后,将每行数据存入二维vector数组`data`中。最后,我们遍历整个二维vector数组并打印它的内容。
需要注意的是,上述代码假设CSV文件中每行数据的单元格之间都用`,`分隔,并且每行数据的单元格数相同。如果CSV文件中单元格之间使用其他分隔符(如`;`、`\t`等),则需要修改代码中的分隔符参数。此外,如果每行数据的单元格数不一致,则需要添加一些额外的逻辑来处理这个问题。
阅读全文