嗨,我正在使用 VS2010 和 MBCS。谁能告诉我如何将无符号字符转换为 LPCSTR?对不起,我只是 C++ 的新手... :) 谢谢
这是它失败的代码:
hr = MsiSetProperty(hInstall, "LOCKCODE", szLockCode);
ExitOnFailure(hr, "failed to set LOCKCODE");
szLockCode
是需要转换的变量。
嗨,我正在使用 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 从“const char *”转换为“LPCWSTR”
为避免这种情况,您应该进行类型转换:
hr = MsiSetProperty(hInstall, "LOCKCODE", (LPCSTR)szLockCode);
或在字符串前使用 L 前缀:
LPCSTR szLockCode = L"Some error";
hr = MsiSetProperty(hInstall, "LOCKCODE", szLockCode );
这是对 LPCSTR 代表的一个很好的解释: