Faire un flush en C++ - C++ - Programmation
Marsh Posté le 26-06-2004 à 17:26:14
1) ne mélange pas stdio et stream
2) std::flush fonctionne. ton cin.clear() est a priori inutile
3) un '\n' + suivi d'un flush -> le flush est inutile
4) il faut flusher entre tout cout non terminé par un '\n' et un cin
5) tu n'a pas de problème de flush. utilise std::getline(std::cin, a_std_string) qui lit une ligne
Marsh Posté le 26-06-2004 à 17:48:07
J'ai essayé :
Code :
|
Lorsque je ne fais que lire des chaînes, ça semble ok. Par contre, si je mélange des saisies avec des nombres (cin >> variable et des saisies avec des chaînes, le résultat est vraiment bizarre...
Pourtant, je respecte bien mes '\n' à la fin des cout...
Marsh Posté le 26-06-2004 à 17:52:15
ou mets des flush. et il n'y a rien de bizarre, tu dois juste merdoyer quelque part
Marsh Posté le 26-06-2004 à 18:56:17
J'ai refait quelques essais et j'y vois un peu plus clair :
quand je suis dans mon programme principal, ça marche impeccable.
Par contre, quand j'utilise ce morceau de code à l'intérieur de ma classe, ça bugge toujours.
Voici ce qui marche dans mon programme principal :
Code :
|
Dans ma classe, editeur est un membre protégé. Je recopie le même code (sans la déclaration string editeur bien sûr) dans une des méthodes et là, ça ne marche pas du tout...
Marsh Posté le 26-06-2004 à 19:25:10
c'est que tu foires ailleurs : note qu'endl == '\n' + flush alors si tu veux pas '\n', n'utilise que flush
Marsh Posté le 26-06-2004 à 20:01:47
wow, j'ai réussi !
En effet, le problème venait d'ailleurs
J'ai dû modifier une fonction permettant une saisie numérique :
Code :
|
J'ai rajouté le cin.ignore() et hop, ça carbure !
Merci pour tes éclaircissements, en tout cas
Marsh Posté le 26-06-2004 à 20:05:35
écoute, plus tu rajoutes de choses sans comprendre plus tu accumules les merdes, certaines en annulant d'autres. si c'est le bordel sans ignore, c'est que quelque chose se passe mal sans que tu le saches. la programmation, c'est pas 'je bourre jusqu'à que ça passe sur mon test'
fais une recherche sur comment on lit proprement un entier, j'ai déjà collé des exemples de codes comme il faut.
Marsh Posté le 26-06-2004 à 17:21:15
Salut,
), j'expose mon problème ici.
J'ai un problème idiot, mais vu que je n'ai pas trouvé de solution sur google ni ici (la recherche efficace et moi, ça a toujours fait deux
J'ai deux variables de type string : editeur et console.
J'invite l'utilisateur à saisir ces deux chaines. Cependant, si l'éditeur est un mot séparé par un espace (exemple : "Ubi Soft" ), le programme retourne :
editeur = "Ubi"
console = "Soft"
Il saute donc la seconde saisie.
J'ai vu sur des forums des solutions du style :
mais ça n'a pas corrigé mon problème : j'ai été obligé de passer par un fflush(stdin) tel qu'on le ferait en C (et encore, cette méthode est déconseillée, je crois).
Ce qui donne donc :
Quelqu'un pourrait-il me dire quelle serait la meilleure syntaxe pour rester dans une optique purement C++ ?
Message édité par monsieur tomate le 26-06-2004 à 20:10:51