c++ ansi utf8 linux,c++ ANSI、UNICODE、UTF8互转

c++ ANSI、UNICODE、UTF8互转

博主:educast 发表时间:2014-01-25 09:05:45 浏览量:1861

static std::wstring MBytesToWString(const char* lpcszString);

static std::string WStringToMBytes(const wchar_t* lpwcszWString);

static std::wstring UTF8ToWString(const char* lpcszString);

static std::string WStringToUTF8(const wchar_t* lpwcszWString);

std::wstring KKLogObject::MBytesToWString(const char* lpcszString)

{

int len = strlen(lpcszString);

int unicodeLen = ::MultiByteToWideChar(CP_ACP, 0, lpcszString, -1, NULL, 0);

wchar_t* pUnicode = new wchar_t[unicodeLen + 1];

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

::MultiByteToWideChar(CP_ACP, 0, lpcszString, -1, (LPWSTR)pUnicode, unicodeLen);

wstring wString = (wchar_t*)pUnicode;

delete [] pUnicode;

return wString;

}

std::string KKLogObject::WStringToMBytes(const wchar_t* lpwcszWString)

{

char* pElementText;

int iTextLen;

// wide char to multi char

iTextLen = ::WideCharToMultiByte(CP_ACP, 0, lpwcszWString, -1, NULL, 0, NULL, NULL);

pElementText = new char[iTextLen + 1];

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

::WideCharToMultiByte(CP_ACP, 0, lpwcszWString, 0, pElementText, iTextLen, NULL, NULL);

std::string strReturn(pElementText);

delete [] pElementText;

return strReturn;

}

std::wstring KKLogObject::UTF8ToWString(const char* lpcszString)

{

int len = strlen(lpcszString);

int unicodeLen = ::MultiByteToWideChar(CP_UTF8, 0, lpcszString, -1, NULL, 0);

wchar_t* pUnicode;

pUnicode = new wchar_t[unicodeLen + 1];

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

::MultiByteToWideChar(CP_UTF8, 0, lpcszString, -1, (LPWSTR)pUnicode, unicodeLen);

wstring wstrReturn(pUnicode);

delete [] pUnicode;

return wstrReturn;

}

std::string KKLogObject::WStringToUTF8(const wchar_t* lpwcszWString)

{

char* pElementText;

int iTextLen = ::WideCharToMultiByte(CP_UTF8, 0, (LPWSTR)lpwcszWString, -1, NULL, 0, NULL, NULL);

pElementText = new char[iTextLen + 1];

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

::WideCharToMultiByte(CP_UTF8, 0, (LPWSTR)lpwcszWString, -1, pElementText, iTextLen, NULL, NULL);

std::string strReturn(pElementText);

delete [] pElementText;

return strReturn;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值