宽字节和多字节转换
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<<IsDBCSLeadByte(bbyte[0])<<endl;
if(biswchar)
{
cout<<"宽字节"<<endl;
}
else
{
cout<<"不是宽字节"<<endl;
}
不过即使这个方法不行,还有一个就是运行时识别变量
cout<<typeid(*codetcword).name()<<endl;
if(typeid(*codetcword) ==typeid(wchar_t))
{
cout<<"宽字节"<<endl;
}
else
{
cout<<"不是宽字节"<<endl;
}
这个能通过,可以使用!!