2012-09-25 194 views
0

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

这是它失败的代码:

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

szLockCode是需要转换的变量。

+0

能否请您提供1)错误的按摩和2)szLockCode申报? – BlackBada

回答

2

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

-1

你可能会得到错误信息,如:

无法从 '为const char *' 转换参数3 'LPCWSTR'

为了避免它,你要么做类型皈依:

hr = MsiSetProperty(hInstall, "LOCKCODE", (LPCSTR)szLockCode); 
字符串之前

或使用左旋前缀:

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

这里是什么LPCSTR代表一个很好的解释:

LPCSTR, LPCTSTR and LPTSTR

+0

-1:如果错误指示错误的宽/ ansi类型正在传递,那么绝对不要仅将其转换为LPCSTR! –