将无符号字符转换为 LPCSTR



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

这是它失败的代码:

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

szLockCode是需要转换的变量。

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

您可能会

收到如下错误消息:

无法将参数 3 从"常量字符 *"转换为"LPCWSTR"

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

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

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

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

以下是对LPCSTR代表什么的一个很好的解释:

LPCSTR、LPCTSTR 和 LPTSTR

最新更新