C++ Academy · 课时

读取和写入 CSV 文件

逐行解析 CSV 文件,并将结果写回磁盘

第 2 / 4 课14 个步骤

读取和写入 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 反馈 — 无需本地设置。

此课程中的所有课时

  1. 构建一个简单的命令行计算器
  2. 读取和写入 CSV 文件
  3. 数字猜谜游戏
  4. 单词频率统计器
← 返回 C++ Academy