Quelle fonction dois-je utiliser pour afficher du texte dans la fenêtre "Sortie" de Visual Studio? J'ai essayé printf()
mais il n'apparaît pas.Comment écrire dans la fenêtre de sortie dans Visual Studio?
Répondre
OutputDebugString fonction le fera.
exemple de code
void CClass::Output(const char* szFormat, ...)
{
char szBuff[1024];
va_list arg;
va_start(arg, szFormat);
_vsnprintf(szBuff, sizeof(szBuff), szFormat, arg);
va_end(arg);
OutputDebugString(szBuff);
}
Si cela est pour la sortie de débogage alors OutputDebugString est ce que vous voulez. Une macro utile:
#define DBOUT(s) \
{ \
std::ostringstream os_; \
os_ << s; \
OutputDebugString(os_.str().c_str()); \
}
Cela vous permet de dire des choses comme:
DBOUT("The value of x is " << x);
Vous pouvez étendre cela en utilisant les macros __LINE__
et __FILE__
pour donner encore plus d'informations.
Pour ceux des terres de caractères Windows et large:
#include <Windows.h>
#include <iostream>
#include <sstream>
#define DBOUT(s) \
{ \
std::wostringstream os_; \
os_ << s; \
OutputDebugStringW(os_.str().c_str()); \
}
Pouvez-vous expliquer cet énoncé un peu? - "Vous pouvez étendre ceci en utilisant les macros __LINE__ et __FILE__ pour donner encore plus d'informations." – sami1592
@ sami1592 Ces deux macros sont définies par le compilateur comme étant la ligne et le fichier (surprise), ce qui vous permet de générer automatiquement des journaux plus utiles contenant la ligne et le fichier. – ZachB
Utilisez la fonction OutputDebugString
ou TRACE
macro (MFC) qui vous permet de faire printf
la mise en forme de style:
int x = 1;
int y = 16;
float z = 32.0;
TRACE("This is a TRACE statement\n");
TRACE("The value of x is %d\n", x);
TRACE("x = %d and y = %d\n", x, y);
TRACE("x = %d and y = %x and z = %f\n", x, y, z);
Voir aussi [ATLTRACE2] (https://msdn.microsoft.com/en-us/library/dhxsse89.aspx) –
Mon compilateur dans Visual Studio ne reconnaît pas ALTTRACE2 ou ALTTRACE. Ai-je besoin d'inclure quelque chose? Est-ce parce que ce n'est pas un projet MFC? C'est juste du C++ pour moi. – Michele
solution commune:
#include <iostream>
//...
std::cerr << "Text" << std::endl;
Ce serait la réponse optimale. Malheureusement, cela ne fonctionne pas. – Dunk
@Dunk où cela ne fonctionne pas? C'est OK dans toutes les versions de MSVS –
Assez simple. Il écrit dans la fenêtre de la console mais pas dans la fenêtre de sortie de débogage comme le souhaite l'OP. J'utilise Visual Studio 2013 Premium. – Dunk
Utiliser OutputDebugString au lieu de afxD ump.
Exemple:
#define _TRACE_MAXLEN 500
#if _MSC_VER >= 1900
#define _PRINT_DEBUG_STRING(text) OutputDebugString(text)
#else // _MSC_VER >= 1900
#define _PRINT_DEBUG_STRING(text) afxDump << text
#endif // _MSC_VER >= 1900
void MyTrace(LPCTSTR sFormat, ...)
{
TCHAR text[_TRACE_MAXLEN + 1];
memset(text, 0, _TRACE_MAXLEN + 1);
va_list args;
va_start(args, sFormat);
int n = _vsntprintf(text, _TRACE_MAXLEN, sFormat, args);
va_end(args);
_PRINT_DEBUG_STRING(text);
if(n <= 0)
_PRINT_DEBUG_STRING(_T("[...]"));
}
- 1. Sortie xUnit.net localisée dans la fenêtre de sortie Visual Studio
- 2. Largeur de la sortie PowerShell dans la fenêtre de sortie de Visual Studio
- 3. rediriger la console vers la fenêtre de sortie Visual Studio Debug dans app.config
- 4. Capture de cout dans la fenêtre de sortie de Visual Studio 2005?
- 5. Comment rediriger la sortie lors du débogage dans Visual Studio?
- 6. Afficher le système DateTime dans la fenêtre de sortie pendant Visual Studio 2008 Build
- 7. Écrire un flux de sortie dans une nouvelle fenêtre
- 8. Fenêtre d'édition fractionnée dans Visual Studio
- 9. Comment rendre la fenêtre Error List automatiquement active lors de la compilation dans Visual Studio?
- 10. visual studio 2008 macro: écriture dans le volet de sortie
- 11. Fermez tous les fichiers dans Visual Studio à la sortie
- 12. Comment faire pour afficher la ligne de commande de l'éditeur de liens dans la sortie de génération, dans Visual Studio?
- 13. Désactivation d'une fenêtre de code dans Visual Studio
- 14. JQuery - Écrire dans la fenêtre d'ouverture
- 15. Écrire du code Flex 3 dans Visual Studio?
- 16. Powershell dans Visual Studio
- 17. Sortie Visual Studio Debugger - Même sortie mais formats différents (comme la sortie décimale dans un projet, hexadécimal dans un autre)
- 18. MSBuild sortie vs sortie Visual Studio contre un interop COM
- 19. Un moyen de voir la sortie de débogage sans Visual Studio?
- 20. Comment ajouter NUnit dans Visual Studio
- 21. Suppression d'une méthode de la fenêtre des propriétés Visual Studio
- 22. Affichage de la classe dans Visual Studio
- 23. Définition de la position de l'invite dans Visual Studio?
- 24. Comment puis-je rediriger la sortie lors du débogage dans Visual Studio 2008?
- 25. Internationalisation dans Visual Studio
- 26. Personnalisation de fenêtres ancrables dans Visual Studio
- 27. Comment ouvrir un document dans une nouvelle fenêtre dans Visual Studio 2008?
- 28. visual studio - std :: invalide la chaîne de sortie du débogueur en mode de sortie
- 29. Quels sont les 1> et 2> dans la fenêtre de construction de Visual Studio?
- 30. Projet d'installation de Visual Studio, définition du chemin, mais pas visible dans la fenêtre de commande
Il y a encore un problème avec cela. _vsnprintf peut tronquer la chaîne formatée pour s'adapter au tampon, mais si cela se produit, la chaîne ne sera pas terminée par un caractère nul. Voir http://msdn.microsoft.com/en-us/library/1kt27hek.aspx et http://stackoverflow.com/questions/357068. – ChrisN
Je reçois une erreur, szBuff est incapable avec le type LPCWSTR –
Vous utilisez le jeu de caractères multi-octets dans les options de votre compilateur. Vous devez ensuite utiliser les versions multi-octets de 'WCHAR szBuff [1024]' '_vsnwprintf' –