^ Chapitre précédent ^ [[programmez_avec_le_langage_c|Sommaire principal]] ^ Chapitre suivant ^ __ A mettre apres les chapitre sur les fonctions et les tests ? __ 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]]. ====== Entrée console ====== qu'est ce que la console/terminale? Comment la lancer? 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'' Note : non testable sur Coliru.com, besoin de compiler en local. Permet d'attendre des instructions de l'utilisateur. Mode interactif : on lance le programme, celui ci s'arrete, le temps de saisir des infos. 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) Les 2 sont possible. Exemple : (ligne commencant par ''>'' = ce que l'utilisateur tape sur une console/terminal) > 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. 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. #include int main() { int i {}; std::cin >> i; std::cout << "input: " << i << std::endl; } Pour lancer le programme : > a.out 123 input: 123 ===== Entrer une ligne de texte ===== Pour entrer une chaine. Essayons avec : #include #include int main() { std::string s {}; std::cin >> s; std::cout << "input: " << s << std::endl; } Pour lancer le programme : > a.out hello input: hello Pas de probleme. Autre test : > a.out hello world input: hello 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"). #include #include int main() { std::string s {}; std::getline(std::cin, s); std::cout << "input: " << s << std::endl; } Avec > a.out hello world input: hello world 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. Autre solution ? Utiliser string + conversion stoi/stof, ou regex, ou autre. ===== Attendre une touche quelconque ===== Avec ignore. ^ Chapitre précédent ^ [[programmez_avec_le_langage_c|Sommaire principal]] ^ Chapitre suivant ^