0Pricing
C++ Academy · Урок

Чтение и запись файлов CSV

Разбирайте файлы CSV построчно и записывайте результаты обратно на диск.

«Чтение и запись файлов CSV» — бесплатный урок C++ Academy на CoddyKit. Это урок 2 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения 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. Пишите собственный разбор только для простых форматов под вашим контролем.

Быстрая проверка

Какой прием позволяет разделить строку по запятым, используя только стандартную библиотеку?

Итоги

Читайте CSV с помощью std::ifstream и std::getline, разделяйте записи stringstream и разделителем-запятой, а типизированные поля разбирайте с помощью std::stoi/stod. Для сложных CSV используйте настоящую библиотеку.

Часто задаваемые вопросы

Урок «Чтение и запись файлов CSV» бесплатный?

Да — полный текст урока «Чтение и запись файлов CSV» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс C++ Academy, подпишись на CoddyKit PRO. Курс C++ Academy содержит 4 уроков всего.

Чему я научусь в уроке «Чтение и запись файлов CSV»?

Разбирайте файлы CSV построчно и записывайте результаты обратно на диск. Ты практикуешь C++ Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать C++ Academy?

Предыдущий опыт не требуется. C++ Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 2 из 4.

Сколько времени занимает урок «Чтение и запись файлов CSV»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке C++ Academy?

Да. Каждый урок C++ Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Создание простого калькулятора CLI
  2. Чтение и запись файлов CSV
  3. Игра «Угадай число»
  4. Счётчик частотности слов
← Назад к C++ Academy