c++ - 连接一个 DWORD 和一个 LPCTSTR

标签 c++ string

我有一个记录错误的旧版 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/

相关文章:

cout 中的 C++ if-else 语句

c# - 当字符串为 null 时返回 DBnull 的扩展

php - 如何将其转换为数组?

c++ - 连接字符串的意外行为

C++ 随机数生成器 For 循环

无法将字符串分配给 C 中的扑克牌程序的单个字符变量

java - 空字符 (\u0000) 如何在字符串中结束?

java - 如何在另一个字符串中搜索字符串列表?

c++ - 左值和文字之间的比较是否会引发左值到右值的转换?

使用 CMake 的 C++ 覆盖设置