Chargement...

Entrée et sortie

Exemple de Base

text
TEXT Code
\#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
TEXT Code
\#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

Prêt à Commencer

Test Your Knowledge

Test your understanding of this topic with practical questions.

2
Questions
🎯
70%
Pour Réussir
♾️
Temps
🔄
Tentatives

📝 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