Bonjour. J'ai un problème. Je suis sur que vous pouvez m'aider, car c'est surement tout con. (je suis pas très familier du C++)
Voila: J'écris un ptit programme, en console, et l'utilisateur pourra lancer des "lignes de commandes". Par exemple:
ce à quoi correspondent ces lignes de commandes n'est pas du tout important. Ce qui me pose problème est qu'elles n'ont pas toutes le même nombre d'arguments!Envoyé par L'utilisateur
Ce que je veux faire, c'est une fonction de saisie qui fonctionne quelque soit le nombre d'arguments (ok... inférieur à un max)
Dans un premier temps, j'étais tout content de voir que cin >> input considère l'espace comme un séparateur. J'ai donc voulu faire un truc du genre:
Mais je n'arrive pas a trouver une condition pour sortir de mon while. J'ai essayé while(!cin.eof()) mais bien sur ça ne marche pas.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 cin >> input; // l'utilisateur entre toute sa ligne cmd = new Command(input); // on crée une "commande" avec le premier mot while( ?????? ) { //pour chaque mot restant sur cin, on ajoute un argument à "commande" cin >> argument; cmd->AddArgument(input); }
Est-ce que quelqu'un a une idée???
Sinon, j'ai eu une autre idée:
dans la FAQ, je suis tombé sur: Comment saisir une chaîne contenant des espaces ? qui propose:
A partir de la je pourrai moi même analyser la ligne en entier et c'est goal! problème: Avec cette solution, je suis obligé d'appuyer 2 fois sur la touche <enter> à la fin de ma saisie... Pas très confortable
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 #include <iostream> #include <string> std::string chaine; std::getline( std::cin, chaine );
Est-ce que quelqu'un a une idée???
Merci d'avance!
Partager