Concatenating a DWORD and a LPCTSTR
Concatenating a DWORD and a LPCTSTR
我有一个记录错误的旧版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);
相关文章:
- C++核心准则 C35 对于接口类"A base class destructor should be either public and virtual, or protected and nonv
- 为什么C++逐位AND运算符在不同大小的操作数中表现为这样
- 为什么 Clang 不允许"and"作为函数名称?
- 位阵列上的快速AND运算
- 是否可以在 C++03 中定义'move-and-swap idiom'等效项
- BoostPython and CMake
- OpenSSL BIO and SSL_read
- Gurobi GRBModel and GRBmodel in C++
- std::visit and std::variant usage
- SHBrowseForFolder with BIF_BROWSEFORCOMPUTER and SHGetPathFr
- Directx12 and keystrokes
- different between int **arr =new int [ n]; and int a[i][j]?
- C++ getenv and setenv
- Inference pytorch C++ with alexnet and cv::imread image
- Visual Studio 2019 C++ and std::filesystem
- 保证逻辑 AND 表达式中的函数调用
- python ctypes and C++ pointers
- C++ const char with .begin() and .end()
- Threads with Classes and std::packaged_task
- Concatenating a DWORD and a LPCTSTR