如何将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