WINCE很好用的字符转换函数

来源:互联网 发布:爱心公益活动网站知乎 编辑:程序博客网 时间:2024/06/01 23:48

作者:dengxin123

转自:http://blog.csdn.net/dengxin123/article/details/2968727


WINCE很好用的字符转换函数
2008-07-27 16:15
在WINCE 下,是使用Unicode编码的,对PC的接口,都要转换一下,才能用。
把以下复制成 *.h文件,加入到工程中,即可。
//===============================
#pragma once
#include "afxwin.h"
#include <string>

//ANSI to Unicode
wstring ANSIToUnicode( const string& str )

{

int len = 0;

len = str.length();

int unicodeLen = ::MultiByteToWideChar( CP_ACP,

0,

str.c_str(),

-1,

NULL,

0 );

wchar_t * pUnicode;

pUnicode = new wchar_t[unicodeLen+1];

memset(pUnicode,0,(unicodeLen+1)*sizeof(wchar_t));

::MultiByteToWideChar( CP_ACP,

0,

str.c_str(),

-1,

(LPWSTR)pUnicode,

unicodeLen );


wstring rt;

rt = ( wchar_t* )pUnicode;

delete pUnicode;



return rt;

}

//Unicode to ANSI
string UnicodeToANSI( const wstring& str )

{

char* pElementText;

int iTextLen;

// wide char to multi char

iTextLen = WideCharToMultiByte( CP_ACP,

0,

str.c_str(),

-1,

NULL,

0,

NULL,

NULL );

pElementText = new char[iTextLen + 1];

memset( ( void* )pElementText, 0, sizeof( char ) * ( iTextLen + 1 ) );

::WideCharToMultiByte( CP_ACP,

0,

str.c_str(),

-1,

pElementText,

iTextLen,

NULL,

NULL );

string strText;

strText = pElementText;

delete[] pElementText;


return strText;

}

//UTF-8 to Unicode
wstring UTF8ToUnicode( const string& str )

{

int len = 0;

len = str.length();

int unicodeLen = ::MultiByteToWideChar( CP_UTF8,

0,

str.c_str(),

-1,

NULL,

0 );

wchar_t * pUnicode;

pUnicode = new wchar_t[unicodeLen+1];

memset(pUnicode,0,(unicodeLen+1)*sizeof(wchar_t));

::MultiByteToWideChar( CP_UTF8,

0,

str.c_str(),

-1,

(LPWSTR)pUnicode,

unicodeLen );


wstring rt;

rt = ( wchar_t* )pUnicode;

delete pUnicode;



return rt;

}

//Unicode to UTF-8
string UnicodeToUTF8( const wstring& str )

{

char* pElementText;

int iTextLen;

// wide char to multi char

iTextLen = WideCharToMultiByte( CP_UTF8,

0,

str.c_str(),

-1,

NULL,

0,

NULL,

NULL );

pElementText = new char[iTextLen + 1];

memset( ( void* )pElementText, 0, sizeof( char ) * ( iTextLen + 1 ) );

::WideCharToMultiByte( CP_UTF8,

0,

str.c_str(),

-1,

pElementText,

iTextLen,

NULL,

NULL );

string strText;

strText = pElementText;

delete[] pElementText;


return strText;