答案:使用fstream和stringstream逐行读取并解析CSV文件,将数据存储在二维vector中,注意路径正确性和字段内逗号问题。

在C++中读取CSV文件,通常使用标准库中的fstream来操作文件,并通过getline函数按行或按字段分割数据。CSV文件以逗号分隔字段,每行代表一条记录。下面介绍一种简单、实用的读取方法。
读取CSV需要处理文件输入和字符串操作,因此要引入以下头文件:
使用std::getline配合字符串流std::stringstream可以方便地拆分每行的字段。以下是一个完整示例:
#include <iostream>
#include <fstream>
#include <sstream>
#include <string>
#include <vector>
int main() {
std::ifstream file("data.csv"); // 打开CSV文件
std::string line, field;
std::vector<std::vector<std::string>> data; // 存储所有数据
if (!file.is_open()) {
std::cerr << "无法打开文件!" << std::endl;
return -1;
}
while (std::getline(file, line)) { // 逐行读取
std::vector<std::string> row;
std::stringstream ss(line);
while (std::getline(ss, field, ',')) { // 按逗号分割字段
row.push_back(field);
}
data.push_back(row); // 将一行数据加入总数据
}
file.close();
// 输出读取结果(测试用)
for (const auto& row : data) {
for (const auto& field : row) {
std::cout << field << "\t";
}
std::cout << std::endl;
}
return 0;
}
实际使用中需注意一些细节:
立即学习“C++免费学习笔记(深入)”;
struct或类对象,便于后续处理
c++怎么学习?c++怎么入门?c++在哪学?c++怎么学才快?不用担心,这里为大家提供了c++速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号