Télécharger la présentation
La présentation est en train de télécharger. S'il vous plaît, attendez
1
Programmation en C++ IO en C++/SL
Standard Library Types, objets pour IO L'entrée de clavier Sortie à l'écran Fichiers
2
Librairie Standard (SL)
Les opérations d'entrée/sortie sont définit dans la bibliothèque standard du C++ (SL) La bibliothèque standard Fait partie du langage Tout le code est contenu dans les fichiers ‘header’, pas de librairies à linker Il faut inclure des 'headers' qu'on veut utiliser Tous les types/objets se trouvent dans le namespace std définition des objets/fonctions pour IO #include <iostream> int main() { // on peut se servir par des // objets/fonctions définit dans // <iostream> return 0; }
3
Les Types, Objets pour IO (Flots)
La bibliothèque standard définit des types et des objets spécialement destinés pour IO Le types de base: std::istream, std::ostream std::istream: définit des objets qu'on peut utiliser pour l'entrée (input) std::ostream: définit des objets qu'on peut utiliser pour la sortie (output) Objets global de flots: std::cin, std::cout, std::cerr Ils sont déjà déclarés, et alors disponible pour leur utilisation, on n'a pas besoin de créer leur instance nous même std::cin: le flot standard pour l'entrée; de type std::istream std::cout: le flot standard pour sortie a l'ecran; de type std::ostream std::cerr: le flot standard pour sortie des erreurs a l'ecran; de type std::ostream
4
Les Opérateurs <<, >>
Flot opérateurs: <<, >> Effectuent l'opération d'entrée/sortie Il signifie « envoie vers » L'exemple de sortie à l'écran: On peut enchaîner des opérations: est équivalent à std::cout << "Bonjour"; L’objet de flot L'opérateur L'objet de string envoyé vers l'écran std::cout << "Bonjour" << std::endl; std::cout << "Bonjour"; std::cout << std::endl;
5
Sortie a l'écran On utilise le flot std::cout et l’opérateur <<
#include <iostream> #include <string> int main () { int i = 1; float f = 2.3; std::string s = "abcd"; std::cout << " i=" << i << " f=" << f << " s=" << s << std::endl; return 0; } 'Header' de SL pour I/O L'opérateur << est intelligent: il s’adapte au type de l’objet placé à sa droite > exo.exe i=1 f=2.3 s=abcd
6
Entrée du clavier On utilise le flot std::cin et l’opérateur >>
#include <iostream> #include <string> int main () { int i; float f; std::string s; std::cin >> i >> f >> s; std::cout << " i=" << i << " f=" << f << " s=" << s << std::endl; return 0; } 'Header' de SL pour I/O Les entrées en cascade sont séparées par tous les caractères de séparation: espace, tabulation, CR > exo.exe 1 2 Blabla i=1 f=2 s=Blabla
7
... Entrée du clavier On utilise le flot std::cin et la fonction std::getline #include <iostream> #include <string> int main () { std::string s; std::getline(std::cin, s); std::cout << “Lit: “ << s << std::endl; // ... return 0; } 'Header' de SL pour I/O On lit la ligne entière, même si elle contient des séparateurs (espace, tab) , jusqu'au caractère CR; Il faut analyser soi-même les lignes > exo.exe 1 Lit: 1 Un texte Lit: Un texte Un autre texte Lit: Un autre texte
8
Les fichiers Les types: std::ifstream, std::ofstream
définit des objets qu'on peut utiliser pour l'entrée d'un fichier (ifstream) et la la sortie vers un fichier (ofstream) Ils sont de la même famille comme std::istream, std::ostream, alors les objets de cet type peuvent être manipulé de même façon par des operateurs: <<, >> Ils sont définit dans le 'header' <fstream> Il n'existe pas des objets global des flots de fichiers (comme std::cin et std::cout), il faut les définir nous même avant l'utilisation: L'objet de flot de l'entrée du fichier input.txt std::ifstream f1("input.txt"); L'objet de flot de la sortie vers le fichier output.txt std::ofstream f2("output.txt"); On choisit nous même les noms de nos objets flots
9
... Les fichiers L'opération d'ouverture du fichier peut échouer
Si le fichier d'entrée n'existe pas, si on n'a pas le droit d'écriture dans le répertoire pour le fichier de sortie, ... Il faut tester le résultat d'ouverture: L'opération d'entrée du fichier peut échouer Si nous sommes arrivées a la fin du fichier et il n'y plus des données à lire Il est préférable de le tester avant chaque opération d'entrée: if (! f1.is_open() { std::cerr << "Cannot open file"); exit(1); } if ( ! f1.eof() ) f1 >> ... ;
10
La sortie dans un fichier
#include <fstream> #include <iostream> #include <string> int main () { int i = 1; float f = 2.3; std::string s = "abcd"; std::ofstream flot("fichier.txt"); if ( ! flot.is_open() ) { std::cerr << "Fichier n'est pas ouvert !!!" << std::endl; return 1; } flot << i << " " << f << " " << s << std::endl; return 0; > exo.exe > more fichier.txt abcd
11
L'entrée d'un fichier #include <fstream>
#include <iostream> #include <string> int main () { int i; float f; std::string s; std::ifstream flot("fichier.txt"); if ( ! flot.is_open() ) { std::cerr << "Fichier n'est pas ouvert !!!" << std::endl; return 1; } if ( ! flot.eof() ) flot >> i; if ( ! flot.eof() ) flot >> f; if ( ! flot.eof() ) flot >> s; std::cout << " i=" << i << " f=" << f << " s=" << s << std::endl; return 0; > exo.exe i=1 f=2.3 s=abcd
12
Les manipulateurs Les objets spécial qui injectent des modifications de comportement sur les flots; manipulateurs std::cout << std::hex << mon_numero << std::endl; endl ends ws dec hex fixed scientific setw(val) setprecision(val) left right ... Insérer un caractère « new line » dans le flot Insérer un caractère de la fin du string dans le flot Lire et ignore les séparateurs (« white-spaces ») Écrire et lire en format décimal (défaut) Écrire et lire en format hexadécimal Utiliser la notation décimale (en virgule fixe) Utiliser la notation scientifique (avec exposant) Régler la largeur de champ I/O pour val Régler val pour la nouvelle valeur pour la précision Ajuster la valeur à gauche Ajuster la valeur à droite
Présentations similaires
© 2024 SlidePlayer.fr Inc.
All rights reserved.