C++读取csv表格数据传递到二维数组变量中
时间: 2024-01-24 08:03:39 浏览: 116
可以使用C++内置的文件输入/输出流(fstream)来读取CSV表格数据,并将其存储到二维数组变量中。以下是一个示例代码:
```cpp
#include <iostream>
#include <fstream>
#include <vector>
#include <string>
#include <sstream>
using namespace std;
int main() {
// 打开CSV文件
ifstream file("data.csv");
// 定义二维vector存储数据
vector<vector<string>> data;
// 读取文件中的每一行数据
string line;
while (getline(file, line)) {
// 定义vector存储每一行数据
vector<string> row;
// 使用stringstream将一行数据分割成多个字符串
stringstream ss(line);
string item;
while (getline(ss, item, ',')) {
row.push_back(item);
}
// 将一行数据添加到二维vector中
data.push_back(row);
}
// 将二维vector转换为二维数组
int n = data.size();
int m = data[0].size();
string** arr = new string*[n];
for (int i = 0; i < n; i++) {
arr[i] = new string[m];
for (int j = 0; j < m; j++) {
arr[i][j] = data[i][j];
}
}
// 输出二维数组中的数据
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
cout << arr[i][j] << " ";
}
cout << endl;
}
// 释放内存
for (int i = 0; i < n; i++) {
delete[] arr[i];
}
delete[] arr;
return 0;
}
```
在上面的示例代码中,我们首先使用fstream打开CSV文件,然后定义一个二维vector存储数据。接着,我们使用getline逐行读取文件中的数据,使用stringstream将每一行数据分割成多个字符串,并将这些字符串添加到一维vector中。最后,将一维vector添加到二维vector中。
接下来,我们将二维vector转换为二维数组。由于二维数组必须在编译时指定大小,因此我们先获取二维vector的大小,然后动态分配二维数组的内存并将数据复制到其中。
最后,我们输出二维数组中的数据,并释放动态分配的内存。
需要注意的是,上面的示例代码只适用于CSV文件中每一行数据包含相同数量的字段的情况。如果CSV文件中每一行数据包含的字段数量不同,则需要进行额外的处理。
阅读全文