zoukankan      html  css  js  c++  java
  • c++ ANSI、UNICODE、UTF8互转


    转载自:http://www.cppblog.com/Tongy0/archive/2013/03/13/198378.html

    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; }
  • 相关阅读:
    SpringBoot结合ShardingSphere实现分库分表、读写分离
    SpringBoot结合ShardingSphere实现主从读写分离
    使用Sentinel实现Spring Cloud Gateway网关流量控制
    使用Sentinel实现热点参数限流
    对比学习UIKit和AppKit--入门级
    UIViewController
    C++的异常处理之一:throw是个一无是处的东西
    About Closure
    理解Objective C 中id
    关于文件压缩的一些小知识
  • 原文地址:https://www.cnblogs.com/liu-zh/p/4541677.html
Copyright © 2011-2022 走看看