Qu'est-ce qui peut expliquer à std :: cout de ne rien afficher?
Pour quelque raison que ce soit, std::cout n'affiche rien du tout à ma demande. La description de mon environnement de développement suit.
Je suis en train de travailler sur une application Qt à l'aide de Qt Creator. Depuis Qt Creator ne peut pas être lancé à partir de ma station (XP64), je suis actuellement en train de développer avec Visual Studio 2008 et le plugin Qt (par l'importation de la .pro fichier de projet). Tout semble aller bien et que l'application fonctionne.
Dans certains cas (selon les arguments de ligne de commande), je ne veux pas lancer le de LUI, juste pour afficher quelques phrases dans la CLI (ligne de commande arguments requis, par exemple).
Je n'ai aucune erreur mais rien ne s'affiche.
Le code correspondant, qui je suis sûr est l' (classique) suivantes :
std::cout << "is this going to be displayed ?" << std::endl;
Avez-vous une idée pourquoi rien ne s'affiche ?
source d'informationauteur Benoît
Vous devez vous connecter pour publier un commentaire.
Ok, réponse que l'on trouve. Réponse Simple, bien sûr, comme toujours lorsqu'elle est confrontée à de tels problèmes. Michael Aaron était sur la droite pistes.
Il suffit de changer de sous-système de la Console de configuration du projet (/propriétés de Configuration/gestionnaire/Système) rend la chose entière de travail. L'interface graphique fonctionne toujours, mais avec un arrière-plan de la console. Je peux faire face à cela.
Sur Windows, les programmes sont généralement construit comme un Sous-système:WINDOWS application ou en tant que sous-système de la CONSOLE.
Programmes créés avec SUBSYSTEM:CONSOLE devraient être en mode texte applications. Pour ce type d'application, stdout et stderr d'impression à la console que vous avez lancé de, la création d'une nouvelle console si nécessaire.
En revanche, le sous-système:les applications WINDOWS ne vous embêtez pas avec une console. Vous pouvez toujours écrire sur la sortie standard stdout et stderr, mais ils ne vont pas n'importe où. Vous pouvez utiliser AllocConsole pour créer une console à imprimer, mais notez qu'il sera toujours l'impression dans une nouvelle fenêtre de console, pas à une fenêtre de console, vous avez lancé le programme.
Un truc pour le sous-système:WINDOWS applications, c'est que même si il n'y a pas de console, vous pouvez toujours tuyau stdout et stderr. Donc, pour tuyau de sortie standard (stdout), vous pouvez le faire:
ou si vous avez
cat
(ou un équivalent):Notez également qu'il n'y a pas vraiment de différence entre le sous-système:WINDOWS applications et SUBSYSTEM:CONSOLE des applications autres que la façon dont Windows traite de la création du processus. (Vous pouvez créer des fenêtres dans le sous-système:les applications de CONSOLE.) Par conséquent, vous pouvez facilement basculer entre le sous-système de types (par exemple, pour utiliser SUBSYSTEM:CONSOLE de debug et de la sous-système:WINDOWS pour libération).
Essayer
CONFIG += console
dans votre .fichier pro.
Windows fait la distinction entre les applications de console et d'applications graphiques, et ne crée pas une console pour des applications avec interface graphique par défaut (voir cette page à partir de MSDN). Vous pouvez utiliser AllocConsole pour en créer un.
C'est peut-être pas le std::cout de la ligne qui fait qu'il ne s'affiche pas, mais la fonction de contenant. C'est peut-être pas appelée à tous, et c'est pourquoi std::cout ne fonctionne pas.