在 C++ 中读取 CSV 文件,可以使用标准库提供的文件操作功能,并通过字符串处理来解析 CSV 格式。以下是一个简单的例子,展示如何读取一个 CSV 文件并将其内容输出到控制台:
示例代码:
#include <iostream>
#include <fstream>
#include <sstream>
#include <string>
#include <vector>
using namespace std;
// 读取 CSV 文件并存储每一行数据
vector<vector<string>> readCSV(const string& filename) {
ifstream file(filename);
vector<vector<string>> data;
string line;
// 检查文件是否成功打开
if (!file.is_open()) {
cerr << "无法打开文件: " << filename << endl;
return data;
}
// 逐行读取文件
while (getline(file, line)) {
stringstream ss(line);
string cell;
vector<string> row;
// 使用逗号分割每个单元格的数据
while (getline(ss, cell, ',')) {
row.push_back(cell);
}
data.push_back(row);
}
file.close();
return data;
}
// 打印读取的 CSV 数据
void printCSV(const vector<vector<string>>& data) {
for (const auto& row : data) {
for (const auto& cell : row) {
cout << cell << " ";
}
cout << endl;
}
}
int main() {
string filename = "example.csv"; // CSV 文件名
vector<vector<string>> data = readCSV(filename);
cout << "读取的 CSV 文件内容:" << endl;
printCSV(data);
return 0;
}
说明:
ifstream file(filename)
:打开指定的 CSV 文件。getline(file, line)
:按行读取文件。stringstream ss(line)
:通过字符串流对每一行进行解析,以便按逗号分割每个单元格。getline(ss, cell, ',')
:按逗号分割单元格数据。vector<vector<string>> data
:用于存储所有的行和列。
示例 CSV 文件 (example.csv
) 格式:
Name,Age,Location
John,25,New York
Jane,30,Los Angeles
Doe,22,Chicago
输出结果:
读取的 CSV 文件内容:
Name Age Location
John 25 New York
Jane 30 Los Angeles
Doe 22 Chicago
注意:
- 这个例子假设 CSV 文件中的数据是没有包含引号的。如果数据字段中包含逗号或引号等特殊字符,可能需要做进一步处理。
- 你可以根据需要扩展该代码,例如,处理有特殊字符的 CSV,或者将数据存储到更复杂的数据结构中。