Quelle fonction dois-je utiliser pour sortir du texte dans la fenêtre "Output" de Visual Studio ?
J'ai essayé printf()
mais ça n'apparaît pas.
Quelle fonction dois-je utiliser pour sortir du texte dans la fenêtre "Output" de Visual Studio ?
J'ai essayé printf()
mais ça n'apparaît pas.
OutputDebugString 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);
}
Il y a toujours un problème avec cela. _vsnprintf peut tronquer la chaîne formatée pour l'adapter au tampon, mais si cela se produit, la chaîne ne sera pas terminée par un nul. Voir msdn.microsoft.com/fr/us/library/1kt27hek.aspx et stackoverflow.com/questions/357068 .
Vous utilisez le jeu de caractères multi-octets dans les options de votre compilateur. Vous devez alors utiliser les versions multi-octets de WCHAR szBuff[1024]
_vsnwprintf
Avertissement 1 avertissement C4996 : '_vsnwprintf' : Cette fonction ou variable n'est peut-être pas sûre. Pensez à utiliser _vsnwprintf_s à la place ;-)
S'il s'agit d'une 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 l'étendre en utilisant l'option __LINE__
et __FILE__
des macros pour donner encore plus d'informations.
Pour ceux qui sont dans le pays des 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() ); \
}
Utilisez le OutputDebugString
ou la fonction TRACE
(MFC) qui vous permet de faire printf
-le formatage du 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 );
Mon compilateur dans Visual Studio ne reconnaît pas ALTTRACE2 ou ALTTRACE. Est-ce que je dois #inclure quelque chose ? Est-ce parce que ce n'est pas un projet MFC ? C'est juste du c++ pour moi.
Conseil utile - si vous utilisez __FILE__
et __LINE__
puis formatez votre débogage comme :
"file(line): Your output here"
alors lorsque vous cliquez sur cette ligne dans la fenêtre de sortie, Visual Studio sautera directement à cette ligne de code. Un exemple :
#include <Windows.h>
#include <iostream>
#include <sstream>
void DBOut(const char *file, const int line, const WCHAR *s)
{
std::wostringstream os_;
os_ << file << "(" << line << "): ";
os_ << s;
OutputDebugStringW(os_.str().c_str());
}
#define DBOUT(s) DBOut(__FILE__, __LINE__, s)
J'ai écrit un article sur ce sujet sur mon blog, donc je savais toujours où je pouvais le trouver : https://windowscecleaner.blogspot.co.nz/2013/04/debug-output-tricks-for-visual-studio.html
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.