Cette page vous donne les différences entre la révision choisie et la version actuelle de la page.
cin [2015/06/02 00:07] 85.7.63.43 [Entrer une ligne de texte] |
cin [2016/04/25 19:28] (Version actuelle) gbdivers |
||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
^ Chapitre précédent ^ [[programmez_avec_le_langage_c|Sommaire principal]] ^ Chapitre suivant ^ | ^ Chapitre précédent ^ [[programmez_avec_le_langage_c|Sommaire principal]] ^ Chapitre suivant ^ | ||
+ | |||
+ | __ A mettre apres les chapitre sur les fonctions et les tests ? __ | ||
+ | |||
+ | <note warning>Ce chapitre est encore en cours de rédaction, voire à l'état d'ébauche. N’hésitez pas a faire des remarques ou poser des questions sur le forum de [[http://zestedesavoir.com/forums/|Zeste de Savoir]] ou de [[http://openclassrooms.com/forum/sujet/nouveau-cours-c-moderne|OpenClassroom]].</note> | ||
====== Entrée console ====== | ====== Entrée console ====== | ||
- | On connait déjà cout, qui signifie "output C console", permet d'envoyer des messages sur la console. Egalement possible d'entrée des valeurs depuis la console avec ''cin'' | + | qu'est ce que la console/terminale? Comment la lancer? |
- | ===== entrée standard ===== | + | On connait déjà cout, qui signifie "output C console", permet d'envoyer des messages sur la console. Egalement possible d'entrée des valeurs depuis la console avec ''std::cin'' |
- | Permet d'entrer des informations. Lecture du texte en entrée, conversion selon le type de variable : | + | Note : non testable sur Coliru.com, besoin de compiler en local. |
- | <code cpp> | + | Permet d'attendre des instructions de l'utilisateur. Mode interactif : on lance le programme, celui ci s'arrete, le temps de saisir des infos. |
- | int i {}; | + | |
- | cin >> i; | + | Different de ligne de commande et argc/argv => info envoyee lors du lancement du programme, pas besoin de mettre en pause ou interaction dynamique avec l'utilisateur. (Note : creation de scripts automatique, lancee par des robots, plus pratiques d'utiliser la ligne de commande. Certain outils propose les 2, comme gdb -i pour lancer en mode interactif) |
- | cout << i*2 << endl; | + | |
+ | Les 2 sont possible. | ||
+ | |||
+ | Exemple : (ligne commencant par ''>'' = ce que l'utilisateur tape sur une console/terminal) | ||
+ | |||
+ | <code> | ||
+ | > dosomething unfichier.txt | ||
+ | Vous voulez ouvrir le fichier "unfichier.txt". Confirmer (o/n). | ||
+ | > o | ||
+ | Lecture du fichier "unfichier.txt" en cours... | ||
+ | Fin de lecture du fichier. | ||
</code> | </code> | ||
+ | |||
+ | Premiere ligne = lance le programme "dosomething" avec un argument "unfichier.txt". Seconde ligne : le programme demande confirmation et attend une reponse (taper sur les touches "o" ou "n" puis entrer). Troisieme ligne: le programme continue. | ||
+ | |||
+ | Ici, 2 modes d'entree d'inso : via argument lors du lancement, et en interactif. Le programme attend la confirmation avant de poursuivre son travail. | ||
+ | |||
+ | ===== Saisie simple ===== | ||
+ | |||
+ | Creation d'une variable, puis utilisation de ''>>'' avec ''std::cin''. Typage fort du C++ fait que ''std::cin'' lit correctement le type de valeur selon le type. | ||
+ | |||
+ | <code cpp main.cpp> | ||
+ | #include <iostream> | ||
+ | |||
+ | int main() { | ||
+ | int i {}; | ||
+ | std::cin >> i; | ||
+ | std::cout << "input: " << i << std::endl; | ||
+ | } | ||
+ | </code> | ||
+ | |||
+ | Pour lancer le programme : | ||
+ | |||
+ | <code> | ||
+ | > a.out 123 | ||
+ | input: 123 | ||
+ | </code> | ||
+ | |||
===== Entrer une ligne de texte ===== | ===== Entrer une ligne de texte ===== | ||
- | getline | + | Pour entrer une chaine. Essayons avec : |
- | j'ai écrit sur le bac à sable, mais je préfère une approbation d'un programmeur plus expérimenté | + | |
- | d3m0t3p | + | <code cpp main.cpp> |
- | ===== Gestion des erreurs ===== | + | #include <iostream> |
+ | #include <string> | ||
+ | |||
+ | int main() { | ||
+ | std::string s {}; | ||
+ | std::cin >> s; | ||
+ | std::cout << "input: " << s << std::endl; | ||
+ | } | ||
+ | </code> | ||
+ | |||
+ | Pour lancer le programme : | ||
+ | |||
+ | <code> | ||
+ | > a.out hello | ||
+ | input: hello | ||
+ | </code> | ||
+ | |||
+ | Pas de probleme. Autre test : | ||
+ | |||
+ | <code> | ||
+ | > a.out hello world | ||
+ | input: hello | ||
+ | </code> | ||
+ | |||
+ | Oups. Les espaces sont utilise pour indiquer une autre entree (comme pour les lignes de commande. Rappel : "a.out hello world" argc = 3) | ||
+ | |||
+ | Pour ligne une ligne complete (ie tout ce qu'il y a jusqu'a "Enter"). | ||
+ | |||
+ | |||
+ | <code cpp main.cpp> | ||
+ | #include <iostream> | ||
+ | #include <string> | ||
+ | |||
+ | int main() { | ||
+ | std::string s {}; | ||
+ | std::getline(std::cin, s); | ||
+ | std::cout << "input: " << s << std::endl; | ||
+ | } | ||
+ | </code> | ||
+ | |||
+ | Avec | ||
+ | |||
+ | <code> | ||
+ | > a.out hello world | ||
+ | input: hello world | ||
+ | </code> | ||
+ | |||
+ | Ok, ca lit correctement. | ||
+ | |||
+ | ===== Lire plusieurs entree ===== | ||
+ | |||
+ | Probleme de \n restant, ajouter ignore. | ||
+ | |||
+ | |||
+ | ===== Valider les entrees ===== | ||
+ | |||
+ | Taper du texte ou autre alors que entier attendu. Comment regler cela ? Tester le retour de cin, clear + ignore. | ||
- | filtrer le texte entré, vérifier qu'il est conforme | + | Autre solution ? Utiliser string + conversion stoi/stof, ou regex, ou autre. |
- | __ pas encore vu les boucles... __ | + | ===== Attendre une touche quelconque ===== |
+ | Avec ignore. | ||
^ Chapitre précédent ^ [[programmez_avec_le_langage_c|Sommaire principal]] ^ Chapitre suivant ^ | ^ Chapitre précédent ^ [[programmez_avec_le_langage_c|Sommaire principal]] ^ Chapitre suivant ^ | ||
- | {{tag> Cours C++}} |