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;
}

最新文章

  1. 自定义滚动条样式(jQuery插件、Webkit、IE)
  2. [Xamarin.Android] Fragment Tips
  3. UESTC 919 SOUND OF DESTINY --二分图最大匹配+匈牙利算法
  4. Android 进度条改变图片透明度
  5. Windows Phone 8.1开发:如何让ListView下拉加载更多?
  6. ppi和dpi
  7. js计算日期天数差-2013-9-26
  8. ES6 扫盲
  9. Android文件管理,实现全选,删除等操作
  10. 事件详解<一>
  11. java.security.InvalidKeyException: Illegal key size
  12. 工控随笔_18_西门子_WinCC的VBS脚本_07_变量作用域和传值、传址
  13. pymysql -转自https://www.cnblogs.com/chenhaiming/p/9883349.html#undefined
  14. LOJ6282 数列分块入门6(分块+暴力)
  15. 学了vue和webpack的笔记
  16. DelphiXE5如何获取Android手机SIM卡串号[转]
  17. mybatis进阶--输入映射和输出映射
  18. vmware虚拟机centOs安装教程
  19. jsp中的隐含9对象
  20. C#基础第二天-作业答案-九九乘法表-打印星星

热门文章

  1. Mysql增加主键或者更改表的列为主键的sql语句
  2. 了解下SoftReference
  3. 实例介绍Cocos2d-x物理引擎:使用关节
  4. HTML+CSS学习笔记(4) - 认识标签(3)
  5. Visual Studio的MethMVVM
  6. java小经验
  7. HTML5之 Microdata微数据
  8. 分享一个难得的YiBo微博客户端应用源码Android版
  9. Windows Phone 8.1 列表控件(1):基本
  10. Media Queries——媒体类型