1

嗨,我正在使用 VS2010 和 MBCS。谁能告诉我如何将无符号字符转换为 LPCSTR?对不起,我只是 C++ 的新手... :) 谢谢

这是它失败的代码:

    hr = MsiSetProperty(hInstall, "LOCKCODE",  szLockCode);
    ExitOnFailure(hr, "failed to set LOCKCODE");

szLockCode是需要转换的变量。

4

2 回答 2

3

无符号字符数组(unsigned char szLockCode[10]例如)在技术上已经是 LPCSTR。如果您已经在使用数组,那么转换不是问题,如果不是,那么您需要一个数组。如果您想要一个字符串,那么您需要一个长度为 2 的数组。字符位于第一个位置 ( szLockCode[0]),值 0 位于第二个位置 ( szLockCode[1])。

于 2012-09-25T11:19:05.487 回答
-1

您可能会收到如下错误消息:

无法将参数 3 从“const char *”转换为“LPCWSTR”

为避免这种情况,您应该进行类型转换:

hr = MsiSetProperty(hInstall, "LOCKCODE",  (LPCSTR)szLockCode);

或在字符串前使用 L 前缀:

LPCSTR szLockCode = L"Some error";
hr = MsiSetProperty(hInstall, "LOCKCODE",  szLockCode );

这是对 LPCSTR 代表的一个很好的解释:

LPCSTR、LPCTSTR 和 LPTSTR

于 2012-09-25T12:55:52.660 回答