zoukankan      html  css  js  c++  java
  • c++ string 和wstring 之间的互相转换函数

    #include <string>
    std::string ws2s(const std::wstring& ws)
    {
        std::string curLocale = setlocale(LC_ALL, NULL);        // curLocale = "C";
        setlocale(LC_ALL, "chs");
        const wchar_t* _Source = ws.c_str();
        size_t _Dsize = 2 * ws.size() + 1;
        char *_Dest = new char[_Dsize];
        memset(_Dest,0,_Dsize);
        wcstombs(_Dest,_Source,_Dsize);
        std::string result = _Dest;
        delete []_Dest;
        setlocale(LC_ALL, curLocale.c_str());
        return result;
    }
    
    std::wstring s2ws(const std::string& s)
    {
        setlocale(LC_ALL, "chs"); 
        const char* _Source = s.c_str();
        size_t _Dsize = s.size() + 1;
        wchar_t *_Dest = new wchar_t[_Dsize];
        wmemset(_Dest, 0, _Dsize);
        mbstowcs(_Dest,_Source,_Dsize);
        std::wstring result = _Dest;
        delete []_Dest;
        setlocale(LC_ALL, "C");
        return result;
    }
    BOOL StringToWString(const std::string &str,std::wstring &wstr)
     {    
         int nLen = (int)str.length();    
         wstr.resize(nLen,L' ');
     
         int nResult = MultiByteToWideChar(CP_ACP,0,(LPCSTR)str.c_str(),nLen,(LPWSTR)wstr.c_str(),nLen);
     
         if (nResult == 0)
         {
             return FALSE;
         }
     
         return TRUE;
     }
     //wstring高字节不为0,返回FALSE
     BOOL WStringToString(const std::wstring &wstr,std::string &str)
     {    
         int nLen = (int)wstr.length();    
         str.resize(nLen,' ');
     
         int nResult = WideCharToMultiByte(CP_ACP,0,(LPCWSTR)wstr.c_str(),nLen,(LPSTR)str.c_str(),nLen,NULL,NULL);
     
         if (nResult == 0)
         {
             return FALSE;
         }
     
         return TRUE;
     }
    std::wstring StringToWString(const std::string &str)
     {
         std::wstring wstr(str.length(),L' ');
         std::copy(str.begin(), str.end(), wstr.begin());
         return wstr; 
     }
     
     //只拷贝低字节至string中
     std::string WStringToString(const std::wstring &wstr)
     {
         std::string str(wstr.length(), ' ');
         std::copy(wstr.begin(), wstr.end(), str.begin());
         return str; 
     }
  • 相关阅读:
    java数据库连接池dbcp的使用
    图片轮显效果大全
    W5500问题集锦(持续更新中)
    Gamma校正及其OpenCV实现
    GlusterFS源代码解析 —— GlusterFS 日志
    cocos2dx 以子弹飞行为例解说拖尾效果类CCMotionStreak
    leetcode__Convert Sorted List to Binary Search Tree
    昨天面试新浪 java试题
    linux概念之性能调优
    Java实现 黑洞数
  • 原文地址:https://www.cnblogs.com/MaxWoods/p/4093681.html
Copyright © 2011-2022 走看看