我有一个记录错误的旧版 Windows 应用程序。如果能找到抛出的错误类型会很好,但在找到项目的源代码后,我意识到这是 C++,而我几乎没有使用 C++ 的经验。
错误代码是DWORD
,日志函数的输入是LPCTSTR
。
目前代码如下:
DWORD dwError;
dwError = SomeFunction();
if (dwError)
{
Log(_T("Something failed"));
}
所以我想将 dwError
的值放入日志消息中。来自 C# 背景的我尝试了 Log(_T("Something failed ("+ dwError + ")"));
但这显然不起作用。
我还尝试阅读有关连接 LPCTSTR
值的内容。我确实找到了一些匹配项,但它们看起来非常复杂,我不知道如何将它们融入到此遗留代码中。
如何让 dwError
成为日志消息的一部分,最好是十六进制表示法。
最佳答案
问题被标记为 C++,但代码和问题是用 C 风格编写的——每个问题的解决方案各不相同;
对于 C++,使用 std::basic_string
;
DWORD dwError;
dwError = SomeFunction();
if (dwError)
{
std::basic_string<TCHAR> msg(_T("Something failed: "));
msg += std::to_string(dwError);
Log(msg.c_str());
}
更像 C 的风格;
DWORD dwError;
dwError = SomeFunction();
if (dwError)
{
TCHAR buffer[1024] = {};
_stprintf(buffer, _T("Something failed: %u"), dwError);
Log(buffer);
}
sprintf
的文档链接到 format specifiers ,对于 HEX,它将是 %X
.
_stprintf(buffer, _T("Something failed: %X"), dwError);
关于c++ - 连接一个 DWORD 和一个 LPCTSTR,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37785200/