如何將LPBYTE轉換爲char *或字符串? 具體而言,我打電話給EnumPrinterDataEx(),並從中取出pData,並且想要將其轉換。當我嘗試使用wcstombs()進行轉換時,它只會從pData中提供第一個字符。但我想知道轉換如何在一般情況下完成。如何將LPBYTE轉換爲C++中的char */string?
感謝
編輯: 得到的pData後,我做了LPWSTR的新變量,然後使用wcstombs轉換成一個char *這一點,而這一切運作良好。謝謝!
如何將LPBYTE轉換爲char *或字符串? 具體而言,我打電話給EnumPrinterDataEx(),並從中取出pData,並且想要將其轉換。當我嘗試使用wcstombs()進行轉換時,它只會從pData中提供第一個字符。但我想知道轉換如何在一般情況下完成。如何將LPBYTE轉換爲C++中的char */string?
感謝
編輯: 得到的pData後,我做了LPWSTR的新變量,然後使用wcstombs轉換成一個char *這一點,而這一切運作良好。謝謝!
如果pData指向比這將是ANSI或Unicode空終止字符串(取決於EnumPrinterDataEx功能版本)的字符串 - 這樣你就可以簡單地將它轉換:
(char*)pData;
(LPTSTR)pData;
感謝您的回覆。我試過兩種方式,但 (char *)只給出第一個字符。 (LPTSTR)給出了一些垃圾值,或者可能不是垃圾,但是我不知道它是什麼。 –
你確定pData指向字符串嗎?你可以查看pData指向的內存嗎? (char *)pData [0],(char *)pData [1]的值是什麼...嘗試(wchar_t *)pData。 – VitaliyG
它崩潰了(char *)pData [0],(char *)pData [2] .. 和(wchar_t *)pData返回一些垃圾值。 當我做wprintf()時,pData的實際值的形式是「AB1CD-E2FGH」 –
嗯,這取決於數據的編碼!你將不得不做一些字符串嗅探來猜測它是UTF-8還是UTF-16或更深奧的東西...... – Cameron