C++:
Работа с CSV

Как это сделать:

Вот фрагмент кода, который читает файл CSV и печатает его содержимое.

#include <iostream>
#include <fstream>
#include <string>
#include <vector>
#include <sstream>

int main() {
    std::string line, cell;
    std::vector<std::vector<std::string>> csvData;
    std::ifstream file("example.csv");

    while (std::getline(file, line)) {
        std::stringstream lineStream(line);
        std::vector<std::string> rowData;
        
        while (std::getline(lineStream, cell, ',')) {
            rowData.push_back(cell);
        }
        csvData.push_back(rowData);
    }
    
    for (const auto& row : csvData) {
        for (const auto& col : row) {
            std::cout << col << " ";  // В зависимости от структуры вашего CSV, подстройте разделитель.
        }
        std::cout << std::endl;
    }
    return 0;
}

Пример вывода для CSV, содержащего имена и возраст:

John 25
Jane 28

Подробнее

CSV существует с начала 1970-х годов. Это основной формат для простого экспорта и импорта данных, но он не подходит для сложных иерархических данных, с которыми лучше справляются XML и JSON. C++ не имеет встроенной поддержки CSV, но работа с файлами и строками достаточно проста. Вы работаете со стандартным вводом/выводом и манипуляцией со строками, не забывая следить за особыми случаями, такими как кавычки и запятые внутри ячеек. Библиотеки типа libcsv и Boost.Tokenizer могут упростить задачу, если вы имеете дело с более сложными файлами CSV.

Смотрите также