嗨,我正在使用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