C++:
Travailler avec CSV
Comment faire :
Lire un fichier CSV en utilisant la bibliothèque standard C++ :
#include <fstream>
#include <iostream>
#include <sstream>
#include <vector>
int main() {
std::ifstream file("data.csv");
std::string line;
while (std::getline(file, line)) {
std::stringstream lineStream(line);
std::string cell;
std::vector<std::string> parsedRow;
while (std::getline(lineStream, cell, ',')) {
parsedRow.push_back(cell);
}
// Traiter parsedRow ici
for (const auto& val : parsedRow) {
std::cout << val << "\t";
}
std::cout << std::endl;
}
return 0;
}
Écrire dans un fichier CSV :
#include <fstream>
#include <vector>
int main() {
std::ofstream file("output.csv");
std::vector<std::vector<std::string>> data = {
{"Nom", "Âge", "Ville"},
{"John Doe", "29", "New York"},
{"Jane Smith", "34", "Los Angeles"}
};
for (const auto& row : data) {
for (size_t i = 0; i < row.size(); i++) {
file << row[i];
if (i < row.size() - 1) file << ",";
}
file << "\n";
}
return 0;
}
Utiliser une bibliothèque tierce : csv2
:
Bien que la bibliothèque standard C++ fournisse les outils de base pour travailler avec des fichiers et des chaînes, l’utilisation de bibliothèques tierces peut simplifier le traitement des CSV. Une telle bibliothèque est csv2
, connue pour sa facilité d’utilisation et son efficacité.
- Installation : Typiquement installée via des gestionnaires de paquets comme Conan ou directement depuis son dépôt GitHub.
Exemple d’utilisation de csv2
pour lire un fichier CSV :
#include <csv2/reader.hpp>
#include <iostream>
int main() {
csv2::Reader<csv2::delimiter<','>, csv2::quote_character<'"'>, csv2::first_row_is_header<true>> csv;
if (csv.mmap("data.csv")) {
const auto header = csv.header();
for (const auto row : csv) {
for (const auto cell : row) {
std::cout << cell.second << "\t"; // Imprimer chaque valeur de cellule
}
std::cout << std::endl;
}
}
return 0;
}
Un exemple de sortie pour les opérations de lecture pourrait ressembler à ceci (en supposant un simple fichier CSV à trois colonnes) :
John 29 New York
Jane 34 Los Angeles
Ces exemples visent à couvrir les opérations fondamentales sur les CSV en C++. Pour des scénarios plus complexes, comme le traitement de fichiers volumineux ou des transformations de données complexes, une exploration plus approfondie de bibliothèques spécialisées ou d’outils pourrait être justifiée.