Entrée et sortie
Exemple de Base
text\#include <iostream>
\#include <string>
\#include <limits>
int main() {
std::string nom;
int age;
std::cout << "Entrez votre nom : ";
std::getline(std::cin, nom);
std::cout << "Entrez votre âge : ";
while (!(std::cin >> age)) {
std::cin.clear();
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
std::cout << "Entrée invalide. Veuillez entrer un âge correct : ";
}
std::cout << "Bonjour, " << nom << "! Vous avez " << age << " ans." << std::endl;
return 0;
}
Exemple Pratique
text\#include <iostream>
\#include <fstream>
\#include <vector>
\#include <algorithm>
\#include <string>
class Etudiant {
public:
std::string nom;
int note;
Etudiant(const std::string& n, int nt) : nom(n), note(nt) {}
void afficher() const {
std::cout << nom << ": " << note << std::endl;
}
};
int main() {
std::ifstream fichierEntree("etudiants.txt");
std::ofstream fichierSortie("etudiants_tries.txt");
if (!fichierEntree) {
std::cerr << "Erreur lors de l'ouverture du fichier d'entrée." << std::endl;
return 1;
}
std::vector<Etudiant> etudiants;
std::string nom;
int note;
while (fichierEntree >> nom >> note) {
etudiants.emplace_back(nom, note);
}
std::sort(etudiants.begin(), etudiants.end(), [](const Etudiant& a, const Etudiant& b) {
return a.note > b.note;
});
for (const auto& etudiant : etudiants) {
etudiant.afficher();
fichierSortie << etudiant.nom << " " << etudiant.note << std::endl;
}
fichierEntree.close();
fichierSortie.close();
return 0;
}
Cet exemple pratique montre comment appliquer l'entrée et la sortie dans un projet C++ réel, en combinant fichiers, structures de données, algorithmes et programmation orientée objet. La classe Etudiant encapsule les informations d'un étudiant, illustrant le concept d'encapsulation et de modularité. Les flux std::ifstream et std::ofstream permettent de lire et d'écrire des fichiers, avec un contrôle des erreurs via std::cerr. Les étudiants sont stockés dans un std::vector, et la fonction std::sort avec une lambda permet de trier les étudiants par note décroissante. Les résultats sont affichés à l'écran et sauvegardés dans un fichier, démontrant la gestion de flux multiples. Ce code met en avant les meilleures pratiques : utilisation de RAII pour la gestion des ressources, prévention des fuites mémoire et optimisation des opérations I/O, tout en intégrant les principes de conception orientée objet et les conteneurs STL.
📊 Tableau de Référence
C++ Element/Concept | Description | Usage Example |
---|---|---|
std::cin | Flux d'entrée standard pour lire depuis la console | int x; std::cin >> x; |
std::cout | Flux de sortie standard pour écrire sur la console | std::cout << "Bonjour" << std::endl; |
std::getline | Lit une ligne complète de texte, y compris les espaces | std::string s; std::getline(std::cin, s); |
std::ifstream | Flux d'entrée depuis un fichier | std::ifstream in("file.txt"); |
std::ofstream | Flux de sortie vers un fichier | std::ofstream out("file.txt"); |
std::vector | Conteneur dynamique pour stocker les données | std::vector<int> v; v.push_back(10); |
🧠 Testez Vos Connaissances
Test Your Knowledge
Test your understanding of this topic with practical questions.
📝 Instructions
- Lisez chaque question attentivement
- Sélectionnez la meilleure réponse pour chaque question
- Vous pouvez refaire le quiz autant de fois que vous le souhaitez
- Votre progression sera affichée en haut