Concatenating a DWORD and a LPCTSTR

Concatenating a DWORD and a LPCTSTR

本文关键字:LPCTSTR and DWORD Concatenating      更新时间:2023-10-16

我有一个记录错误的旧版Windows应用程序。找到抛出什么样的错误会很好,但是在找到项目的源代码后,我意识到这很C++,而且我几乎没有C++经验。

错误代码为DWORD,log函数的输入需要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的文档链接到格式说明符,对于十六进制,它将%X .

_stprintf(buffer, _T("Something failed: %X"), dwError);