ANSI版本
void trace(const char *format, ...)
{
std::string szTemp("t:");
va_list marker = NULL;
va_start(marker, format);
size_t nLength = _vscprintf(format, marker) + 1;
std::vector<char> vBuffer(nLength, '\0');
int nWritten = _vsnprintf_s(&vBuffer[0], vBuffer.size(), nLength, format, marker);
if (nWritten > 0)
{
szTemp += &vBuffer[0];
OutputDebugStringA(szTemp.c_str());
}
va_end(marker);
}
UNICODE版本
void wtrace(const wchar_t *format, ...)
{
std::wstring szTemp(L"t:");
va_list marker = NULL;
va_start(marker, format);
size_t nLength = _vscwprintf(format, marker) + 1;
std::vector<wchar_t> vBuffer(nLength, '\0');
int nWritten = _vsnwprintf_s(&vBuffer[0], vBuffer.size(), nLength, format, marker);
if (nWritten > 0)
{
szTemp += &vBuffer[0];
OutputDebugStringW(szTemp.c_str());
}
va_end(marker);
}