有没有办法将byte *消息转换为除WideCharToMultiBYte()以外的LPCWSTR? 谢谢回复
Abhineet Agarwal
答案 0 :(得分:2)
byte*
我认为你的意思是char*
字符串
如果确实如此,您可以将swprintf
与%hs
标志一起使用。
示例:
wchar_t msg[100];
swprintf(msg, L"%hs", "message");
答案 1 :(得分:0)
以下是MSDN链接中的示例:
void main( void )
{
int i;
char *pmbbuf = (char *)malloc( MB_CUR_MAX );
wchar_t *pwchello = L"Hello, world.";
printf( "Convert wide-character string:\n" );
i = wcstombs( pmbbuf, pwchello, MB_CUR_MAX );
printf( "\tCharacters converted: %u\n", i );
printf( "\tMultibyte character: %s\n\n", pmbbuf );
}
答案 2 :(得分:0)
如果编码是默认编码,则为mbstowcs。否则,您可以使用libiconv中的iconv或使用Windows API函数,它非常易于使用,只需要几行代码。
答案 3 :(得分:-1)
我得到了解决方案。
如果您想将BYTE *转换为LPCWSTR而不是使用WideCharToMultiByte,那么我们可以按以下方式使用:
//Suppose
BYTE * message;
//where message="MessageRequest"
//now create one variable called "msg"....
WCHAR msg[100];
//Copy "message" content into "msg" .
//Now take variable of LPCWSTR type
LPCWSTR msg1;
msg1=(LPCWSTR)msg;
//and display it using DrawText(...);
//And u will be able to see proper message.