宽字节(wchar_t)转变多字节(char)

宽字节和多字节转换

  int iindex_1 = 0;
  char *pmbbuf = new char[100];

  wchar_t *pwchello = L"Hello, world."; 


  iindex_1 = wcstombs(pmbbuf,pwchello,100); 


  printf( "转换以后是: %s\n\n", pmbbuf );

 

这两个是标准C++的函数,

//宽字节转单字节 :size_t wcstombs( char *mbstr, const wchar_t *wcstr, size_t count );

//单字节转宽字节 :size_t mbstowcs( wchar_t *wcstr, const char *mbstr, size_t count );

=======如何判断一个字符是否宽字节===

这个网上说是IsDBCSLeadByte(),但是这个函数始终没用成功,貌似不行啊。

wchar_t* codetcword = L"abc";

BYTE* bbyte = (BYTE*)codetcword;

bool biswchar = IsDBCSLeadByte(bbyte[0]);
cout< if(biswchar)
{
cout<<"宽字节"< }
else
{
cout<<"不是宽字节"< }

不过即使这个方法不行,还有一个就是运行时识别变量

cout< if(typeid(*codetcword) ==typeid(wchar_t))
{
  cout<<"宽字节"< }
else
{
  cout<<"不是宽字节"< }

这个能通过,可以使用!!

 

你可能感兴趣的:(经验)