Introduction
Les fichiers CSV et JSON sont largement utilisés pour stocker et échanger des données. En C++, il est possible de manipuler ces formats à l’aide des outils de la STL (fstream
) pour les CSV et de bibliothèques externes comme nlohmann/json
pour les JSON.
Avant d'aller plus loin, vous pouvez consulter notre article sur la gestion des fichiers en C++ pour comprendre les bases de l’ouverture, de la lecture et de l’écriture de fichiers en C++.
Cet article explique comment lire et écrire des fichiers CSV et JSON en C++, avec des exemples concrets.
1. Lecture et écriture de fichiers CSV en C++
Les fichiers CSV (Comma-Separated Values) stockent des données sous forme de tableaux, où chaque ligne représente une entrée et chaque colonne est séparée par une virgule (,
) ou un point-virgule (;
).
1.1. Écriture dans un fichier CSV
#include <iostream>
#include <fstream>
using namespace std;
int main() {
ofstream fichier("donnees.csv"); // Ouvre un fichier en écriture
if (fichier.is_open()) {
fichier << "Nom,Âge,Score\n";
fichier << "Alice,25,90\n";
fichier << "Bob,30,85\n";
fichier.close();
cout << "Données écrites dans donnees.csv" << endl;
} else {
cout << "Erreur : Impossible d'ouvrir le fichier." << endl;
}
return 0;
}
Résultat dans donnees.csv :
Nom,Âge,Score
Alice,25,90
Bob,30,85
1.2. Lecture d’un fichier CSV
#include <iostream>
#include <fstream>
#include <sstream>
#include <vector>
using namespace std;
int main() {
ifstream fichier("donnees.csv");
string ligne;
if (fichier.is_open()) {
while (getline(fichier, ligne)) {
stringstream ss(ligne);
string champ;
vector<string> colonnes;
while (getline(ss, champ, ',')) {
colonnes.push_back(champ);
}
for (const auto &val : colonnes) {
cout << val << " ";
}
cout << endl;
}
fichier.close();
} else {
cout << "Erreur : Impossible de lire le fichier." << endl;
}
return 0;
}
Sortie console :
Nom Âge Score
Alice 25 90
Bob 30 85
2. Lecture et écriture de fichiers JSON en C++
Les fichiers JSON (JavaScript Object Notation) sont un format structuré en paires clé-valeur, souvent utilisé pour échanger des données entre applications.
C++ ne prend pas en charge JSON nativement, mais des bibliothèques comme nlohmann/json permettent de le manipuler facilement.
Installation de nlohmann/json
(via vcpkg) :
- Assurez-vous que
vcpkg
est installé sur votre système. - Ouvrez un terminal et exécutez la commande suivante :
vcpkg install nlohmann-json
2.1. Écriture dans un fichier JSON
#include <iostream>
#include <fstream>
#include <nlohmann/json.hpp>
using namespace std;
using json = nlohmann::json;
int main() {
json data = {
{"nom", "Alice"},
{"âge", 25},
{"scores", {90, 85, 88}}
};
ofstream fichier("donnees.json");
if (fichier.is_open()) {
fichier << data.dump(4); // `dump(4)` pour un format lisible
fichier.close();
cout << "Données écrites dans donnees.json" << endl;
} else {
cout << "Erreur : Impossible d'ouvrir le fichier." << endl;
}
return 0;
}
Résultat dans donnees.json :
{
"nom": "Alice",
"âge": 25,
"scores": [90, 85, 88]
}
2.2. Lecture d’un fichier JSON
#include <iostream>
#include <fstream>
#include <nlohmann/json.hpp>
using namespace std;
using json = nlohmann::json;
int main() {
ifstream fichier("donnees.json");
if (fichier.is_open()) {
json data;
fichier >> data;
fichier.close();
cout << "Nom : " << data["nom"] << endl;
cout << "Âge : " << data["âge"] << endl;
cout << "Scores : ";
for (const auto &score : data["scores"]) {
cout << score << " ";
}
cout << endl;
} else {
cout << "Erreur : Impossible de lire le fichier." << endl;
}
return 0;
}
3. Entraine toi !
Écrire un programme en C++ qui effectue les opérations suivantes :
-
Lire un fichier CSV (
data.csv
) contenant une liste de produits avec les colonnes suivantes :- Nom (Nom du produit)
- Prix (Prix du produit)
- Stock (Quantité en stock)
-
Convertir ces données en JSON.
-
Enregistrer les données JSON dans un fichier
data.json
. -
Lire les données depuis
data.json
et les afficher.
Exigences
- Utiliser la bibliothèque nlohmann/json pour la gestion des fichiers JSON.
- Utiliser les flux de fichiers en C++ (
ifstream
,ofstream
). - Respecter une bonne structure de code avec une gestion correcte des erreurs.
Conclusion
Les fichiers CSV et JSON sont des formats courants pour stocker et échanger des données.
- En C++, les fichiers CSV sont facilement manipulables avec
fstream
. - Les fichiers JSON, en revanche, nécessitent l'utilisation d'une bibliothèque externe comme nlohmann/json.
Grâce à ces outils, la manipulation et la conversion des données deviennent plus simples et efficaces.
Dans le prochain article, nous explorerons les expressions régulières (std::regex
) en C++, un outil puissant pour manipuler et extraire des données textuelles.