2012-09-25 541 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! –