嗨,我正在使用VS2010和MBCS。任何人都可以告诉我如何将无符号字符转换为LPCSTR?对不起,我只是新的C++ ... :)谢谢将无符号字符转换为LPCSTR
这是它失败的代码:
hr = MsiSetProperty(hInstall, "LOCKCODE", szLockCode);
ExitOnFailure(hr, "failed to set LOCKCODE");
szLockCode
是需要转换的变量。
嗨,我正在使用VS2010和MBCS。任何人都可以告诉我如何将无符号字符转换为LPCSTR?对不起,我只是新的C++ ... :)谢谢将无符号字符转换为LPCSTR
这是它失败的代码:
hr = MsiSetProperty(hInstall, "LOCKCODE", szLockCode);
ExitOnFailure(hr, "failed to set LOCKCODE");
szLockCode
是需要转换的变量。
无符号字符数组(例如unsigned char szLockCode[10]
)在技术上已经是LPCSTR。如果你已经使用了一个数组,那么转换不是问题,如果没有,那么你需要一个数组。如果你想要一个字符串,那么你需要一个长度为2的数组。字符在第一个位置(szLockCode[0]
),值0在第二个位置(szLockCode[1]
)。
你可能会得到错误信息,如:
无法从 '为const char *' 转换参数3 'LPCWSTR'
为了避免它,你要么做类型皈依:
hr = MsiSetProperty(hInstall, "LOCKCODE", (LPCSTR)szLockCode);
字符串之前
或使用左旋前缀:
LPCSTR szLockCode = L"Some error";
hr = MsiSetProperty(hInstall, "LOCKCODE", szLockCode);
这里是什么LPCSTR代表一个很好的解释:
-1:如果错误指示错误的宽/ ansi类型正在传递,那么绝对不要仅将其转换为LPCSTR! –
能否请您提供1)错误的按摩和2)szLockCode申报? – BlackBada