Bonjour,
J'ai un problème avec Eclipse IDE pour les développeurs C / C ++. P>
J'écris un outil SMAL pour la conversion de chaînes. Tout en testant sur un point Mais ce n'est pas tous les endroits où ... Un autre exemple: p> Le message d'erreur est affiché correctement si l'argument est manquant si l'argument est manquant. .
Mais si l'argument est là et que le programme continue les sorties de test: P> COUT << "TEST"; ne sont pas affichés ...
COUT << "test"; code>
ne s'affiche pas. P>
COUT << "TEST2"; P>
BlockQuote>
Il me manque quelque chose d'évident? P>
7 Réponses :
Vous devez mettre fin aux chaînes de sortie avec Newline, par exemple: `Cout << Test \ n" ``. La raison est que la sortie standard est tamponnée et que le tampon est rincé sur la nouvelle ligne. Il existe probablement un moyen de rincer le tampon COUT sans délivrer une nouvelle ligne, mais je ne le connais pas par cœur. Inclut probablement l'accès au Streambuf sous-jacent (via la méthode RDBUF). P>
Avez-vous essayé avec std :: endl comme Ismail dit? C'est en fait censé rincer le tampon de sortie. '\ n' n'est pas.
Ok avec cela ça marche ... Mais ça n'a toujours pas de sens pour moi ... pourquoi ça marche avant? ON: COUT << "ERREUR: Mauvaise quantité d'arguments! Un seul autorisé ... \ n";
@Beasly, car la sortie est rinçue sur le système d'exploitation, et lorsque votre programme quitte votre programme, le système d'exploitation s'occupe de rincer les tampons (c'est-à-dire l'affichage de la console). La raison pour laquelle le endl code> corrige i> votre problème est celui-ci ainsi que de rincer au système d'exploitation, les tampons OS May i> sont flushés, raison que j'ai posé des questions sur l'étape À travers le GDB, c'est que compter sur
COUT CODE> S pour débogage est une approche assez fondamentale et sujette à des situations telles que celle que vous avez rencontrée, en passant avec un débogueur, est une meilleure approche pour déterminer si quelque chose fonctionne ou si ne pas...
Merci d'avoir expliqué, les choses deviennent plus claires maintenant :) En fait, je débogage ... Mais à un moment donné, je n'étais pas sûr que des mesures sont vraiment passées, c'est pourquoi je veux mettre des couples sur le débogage :)
"Il existe probablement un moyen de rincer le tampon COUT sans émettre une nouvelle ligne, mais je ne le sais pas par cœur." => << Flush code>
(non difficile de se rappeler vraiment)
Travaillé pour moi comme charme. Merci!
Ne fonctionne pas pour moi, j'ai également appelé explicitement pour flush () code>, et il n'imprime toujours rien
J'ai eu un problème similaire. Dans mon cas, le programme donnerait une sortie si elle est exécutée à partir de la ligne de commande mais non de la console Eclipse. La solution consistait à utiliser la version 32 bits d'Eclipse et non le 64 bits. P>
J'ai lu que c'était un bug. Pourrait ne pas être le même problème cependant. P>
Essayez de sortir un espace au début de chaque ligne p>
COUT << "" << ..... P>
Pour moi, installez les versions 32 bits d'Eclipse (Indigo 3.7) et le JDK / JRE 32 bits n'a pas fonctionné. J'utilise la solution beaucoup plus rapide de la Devis de Eclipse CDT / User / FAQ - Console Eclipse ne montre pas la sortie sur Windows : P> Console Eclipse ne montre pas la sortie sur Windows à Eclipse CDT sur
Windows, sortie standard du programme étant exécuté ou débogué est pleinement
tamponné, car il n'est pas connecté à une console Windwos, mais à un
tuyau. Voir Bug 173732 pour plus de détails. Soit ajouter des appels fflush après
chaque impression ou ajoutez les lignes suivantes au début de la principale
Fonction: p>
setvbuf(stdout, NULL, _IONBF, 0);
setvbuf(stderr, NULL, _IONBF, 0);
Cette solution de contournement de Windows fonctionne également pour Eclipse 3.8 64 bits avec CDT 6.0 sur Ubuntu 12.10 64 bits.
Je cherchais également exactement ces informations quand j'ai trouvé ceci sur le site Web de Microsoft http://support.microsoft.com/kb/94227
Je pense une méthode simple est d'utiliser STD :: Flush lorsque vous souhaitez forcer la rinçage du tampon interne que COUT utilise P>
*std::cout << ... << std::flush;*
Cela se produit lorsque vous déboguez votre code et que vous ne voyez pas la sortie jusqu'au dernier.
Utilisez pour voir la sortie immédiatement sur stdout (console) p> p>
Salut après une lutte similaire, j'ai compris que le premier élément de la variable de chemin d'environnement des propriétés du projet doit être "C: \ Mingw \ bin;" Sinon, une mauvaise version peut être utilisée, surtout si vous utilisez un compilateur différent. P>
Je n'ai pas utilisé Eclipse, mais êtes-vous sûr que votre code fonctionne bien. Si par hasard, il se bloque à la ligne 'CommandConverter A (ARGV [1]);', et vous n'êtes pas informé de l'accident, vous ne verrez aucune sortie.
Que se passe-t-il si vous exécutez la ligne de commande?
Je ne cours pas ATM uniquement sur Commandline ... mais cela faisait cela à travers la console Eclipse ... devrait être la même chose n'est-ce pas? - Le code ne plante pas là-bas ... Cela fait beaucoup plus tard ... Pour une analyse plus poussée, j'ai besoin de la sortie. Si je débobile et passez ce point simplement rien ne s'affiche: /
Essayez de changer le
COUT code> vers
CERR code>, voir si vous voyez la sortie.
Idem ... rien ne se passe ... Je suis sur Google, un gars avait la même chose. Sa solution utilisait une autre version Eclipse, j'ai également essayé cela aussi, sans succès: /
Et si vous exécutez ceci dans gdb, écrivez-vous les déclarations code> code>?
la solution est l'ENDL; À la fin ... voir la réponse ci-dessous