多字节字符串与宽字节字符串的相互转化

来源:互联网 发布:央视财经频道网络直播 编辑:程序博客网 时间:2024/05/29 15:56

    我们有时在程序设计中,可能需要多字节字符串和宽字节字符串之间进行相互的转化,一般来说有两种API;

    一,C   API: mbstowcs,wcstombs; 示例程序如下:

    

#include <stdio.h>#include <Windows.h>//wchar转化为charchar* wcharTochar(wchar_t *src){int len=wcslen(src);char *dest = new char[len+1];ZeroMemory(dest,len+1);wcstombs( dest, src, len );return dest;}//char转化为wcharwchar_t* charTowchar(char *src){int len=strlen(src);wchar_t *dest = new wchar_t[len+1];ZeroMemory(dest,2*len+2);mbstowcs(dest,src,len);return dest;}void main(){wchar_t* wcharStr=L"hello world!";char* asciiStr=wcharTochar(wcharStr);printf("%s\n",asciiStr);delete[] asciiStr;char *charStr="welcome!";wchar_t *wcharStr2=charTowchar(charStr);printf("%S",wcharStr2);printf("\n");delete[] wcharStr2;}

    二,WIN32 API :WideCharToMultiByte和MultiByteToWideChar ;示例代码如下

 1,宽字节转化为多字节

wchar_t* wcs = L"中国,你好!I Love You!";int lengthOfMbs = WideCharToMultiByte( CP_ACP, 0, wcs, -1, NULL, 0, NULL, NULL);char* mbs = new char[ lengthOfMbs ];WideCharToMultiByte( CP_ACP, 0, wcs, -1, mbs, lengthOfMbs, NULL, NULL); printf("%s\n",mbs);delete[] mbs;

 

2,多字节转化为宽字节

char* mbs = "I Love You!";int lengthOfWcs = MultiByteToWideChar( CP_ACP, 0, mbs, -1, NULL, 0 );wchar_t* wcs = new wchar_t[lengthOfWcs];MultiByteToWideChar( CP_ACP, 0, mbs, -1, wcs, lengthOfWcs );delete[] wcs;


参考:http://blog.csdn.net/waterathena/article/details/3767588


原创粉丝点击