Outils d'utilisateurs

Outils du Site


cin

Différences

Cette page vous donne les différences entre la révision choisie et la version actuelle de la page.

Lien vers cette vue

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 informationsLecture du texte en entréeconversion selon le type de variable :+Note : non testable sur Coliru.combesoin de compiler en local.
  
-&lt;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 =&gtinfo 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 &lt;&lti*2 &lt;&ltendl;+ 
 +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 &quot;unfichier.txt&quot;. Confirmer (o/n). 
 +&gt
 +Lecture du fichier &quot;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/stofou 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++}} 
cin.1433196467.txt.gz · Dernière modification: 2015/06/02 00:07 par 85.7.63.43