WINCE很好用的字符转换函数

本文提供了在WINCE环境下实现不同字符编码(如ANSI、Unicode、UTF-8)相互转换的实用函数。通过这些函数可以方便地进行字符串编码格式的转换。
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;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值