【问题标题】:'Cannot add two pointers' adding LPCWSTR with WCHAR'不能添加两个指针'添加 LPCWSTR 和 WCHAR
【发布时间】:2017-12-13 04:53:20
【问题描述】:

我声明了两个变量:

WCHAR w_ErrorMessage[256];
LPCWSTR lp_ErrMsg;

第一个变量用于返回 SQLite 错误消息,第二个变量用于 MessageBox 文本。我尝试并编写了这段代码:

lp_ErrMsg = L"Database sql error: " + WCHAR(w_ErrorMessage);
MessageBox(0, lp_ErrMsg, L"Error", MB_ICONERROR | MB_OK);

但类似这样的消息显示: ScreenShot

如果我删除 w_ErrorMessage 变量后面的 WCHAR,我会得到“错误:无法添加两个指针”。

我希望 MessageBox 显示错误:SQLite 错误:%TheActualErrorMessage%。 我该怎么做?

【问题讨论】:

  • 这是我见过的未定义行为中最漂亮、最令人惊讶的案例。想知道这些汉字是否有意义会很有趣……
  • WCHAR(w_ErrorMessage) 将数组w_ErrorMessage(之前可能隐式转换为(WCHAR*))转换为WCHAR。从字面上看,一个指向宽字符的指针。这使编译器保持沉默,但可能不提供预期的内容。顺便说一句:如果您按照答案中的建议使用wcscat(),请不要忘记为目标指针分配足够的内存。

标签: c++ wchar lpcwstr


【解决方案1】:

+ 运算符不用于连接 C/C++ 中的字符串。请改用wcscat 函数。

【讨论】:

    猜你喜欢
    • 2015-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多