读取和写入 CSV 文件
逐行解析 CSV 文件,并将结果写回磁盘
读取和写入 CSV 文件 是 CoddyKit 上的免费 C++ Academy 课时。 这是第 2 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 C++ Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 C++ Academy 课程共包含 4 节课。
什么是 CSV
CSV(逗号分隔值)是一种纯文本表格格式。每一行是一条记录,逗号分隔各列。格式简单,但边界情况很多。
所需头文件
使用 fstream 处理文件,使用 sstream 进行解析。
#include <fstream>
#include <sstream>
#include <string>
#include <vector>打开文件进行读取
使用文件路径构造 std::ifstream。请检查文件是否成功打开。
std::ifstream file("data.csv");
if (!file) {
std::cerr << "Cannot open file\n";
return 1;
}逐行读取
使用 std::getline 遍历各行。
std::string line;
while (std::getline(file, line)) {
process(line);
}拆分一行
使用 stringstream 和带分隔符的 getline,将每一行拆分为多个字段。
std::vector<std::string> split(const std::string& line) {
std::vector<std::string> fields;
std::stringstream ss(line);
std::string field;
while (std::getline(ss, field, ',')) {
fields.push_back(field);
}
return fields;
}跳过表头
如果第一行包含列名,请读取并丢弃它。
std::string header;
std::getline(file, header); // discard解析类型化字段
使用 std::stoi 或 std::stod 将字符串字段转换为具有相应类型的值。
auto fields = split(line);
int id = std::stoi(fields[0]);
double price = std::stod(fields[2]);写入 CSV
使用 std::ofstream 进行写入。使用 << 输出值,并添加逗号和换行符。
std::ofstream out("results.csv");
out << "name,score\n";
out << "Ada,95\n";
out << "Bob,82\n";为包含逗号的字段加引号
如果字段包含逗号,请用双引号将其包围。要在字段中包含引号,请将引号加倍。
std::string escape(const std::string& s) {
if (s.find_first_of(",\"\n") == std::string::npos) return s;
std::string r = "\"";
for (char c : s) {
if (c == '"') r += '"';
r += c;
}
return r + "\"";
}处理字段中的换行符
带引号的字段可以跨越多条实际行。健壮的 CSV 读取器会在多次 getline 调用之间跟踪引号状态。对于简单情况,请使用不跨行的字段。
关闭文件
文件流会在销毁时自动关闭(RAII)。如果要显式关闭,请使用 file.close()——只有在您想复用该流时才需要这样做。
何时使用库
对于复杂的 CSV 文件(带引号的逗号、多行值、编码),请使用 rapidcsv 或 csv-parser 等库。只有面对简单且受控的格式时,才建议自行实现。
快速检查
只使用标准库时,使用什么技术可以按逗号拆分一行?
回顾
使用 std::ifstream + std::getline 读取 CSV,使用 stringstream 和逗号分隔符拆分行,并使用 std::stoi/stod 解析类型化字段。对于复杂的 CSV,请使用成熟的库。
用 AI 导师学习 C++ — 免费
在浏览器中编写并运行真实代码,获得全天候 AI 导师的即时帮助,并在网页或应用中继续学习。
- 课程
- 51
- 课程
- 203
常见问题解答
「读取和写入 CSV 文件」课时是免费的吗?
是的 — 「读取和写入 CSV 文件」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 C++ Academy 课程的其余内容,请升级到 CoddyKit PRO。 C++ Academy 课程共包含 4 节课。
「读取和写入 CSV 文件」这节课中我会学到什么?
逐行解析 CSV 文件,并将结果写回磁盘 你通过在浏览器中直接运行的动手代码来练习 C++ Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 C++ Academy 需要有经验吗?
无需任何先前经验。CoddyKit 上的 C++ Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 2 节课,共 4 节。
「读取和写入 CSV 文件」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 C++ Academy 课中编写并运行代码吗?
能。每节 C++ Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。
此课程中的所有课时
- 构建一个简单的命令行计算器
- 读取和写入 CSV 文件
- 数字猜谜游戏
- 单词频率统计器