zoukankan      html  css  js  c++  java
  • C++ STRING 和WSTRING 之间的互相转换函数 和字符串替换

    1. #include <string>  
    2. std::string ws2s(const std::wstring& ws)  
    3. {  
    4. std::string curLocale = setlocale(LC_ALL, NULL); // curLocale = "C";  
    5. setlocale(LC_ALL, "chs");  
    6. const wchar_t* _Source = ws.c_str();  
    7. size_t _Dsize = 2 * ws.size() + 1;  
    8. char *_Dest = new char[_Dsize];  
    9. memset(_Dest,0,_Dsize);  
    10. wcstombs(_Dest,_Source,_Dsize);  
    11. std::string result = _Dest;  
    12. delete []_Dest;  
    13. setlocale(LC_ALL, curLocale.c_str());  
    14. return result;  
    15. }  
    16.   
    17. std::wstring s2ws(const std::string& s)  
    18. {  
    19. setlocale(LC_ALL, "chs");   
    20. const char* _Source = s.c_str();  
    21. size_t _Dsize = s.size() + 1;  
    22. wchar_t *_Dest = new wchar_t[_Dsize];  
    23. wmemset(_Dest, 0, _Dsize);  
    24. mbstowcs(_Dest,_Source,_Dsize);  
    25. std::wstring result = _Dest;  
    26. delete []_Dest;  
    27. setlocale(LC_ALL, "C");  
    28. return result;  
    29. }  

    在C++中,字符串替换有很多方法,这里主要说一下STL里的WString中的替换,虽然WString自带了一个Replace函数,但是只能替换一次,太不好了,因此单独写了个替换函数

    [函数]

           /** 
            * @brief   实现字符串替换 
            * @param   orignStr 源串 
            * @param   oldStr 查找的串 
            * @param   newStr 替换的新串 
            * @return 返回修改后的串 
            */ 
            static wstring Replace(const wstring& orignStr, const wstring& oldStr, const wstring& newStr);

    [实现]

    std::wstring Replace( const wstring& orignStr, const wstring& oldStr, const wstring& newStr ) 

        size_t pos = 0; 
        wstring tempStr = orignStr; 
        wstring::size_type newStrLen = newStr.length(); 
        wstring::size_type oldStrLen = oldStr.length(); 
        while(true) 
        { 
            pos = tempStr.find(oldStr, pos); 
            if (pos == wstring::npos) break;

            tempStr.replace(pos, oldStrLen, newStr);         
            pos += newStrLen;

        }

        return tempStr; 
    }

  • 相关阅读:
    电路的耦合方式
    PCBA与PCB的区别
    vue记住密码功能
    数组变异
    element时间选择器插件转化为YYYY-MM-DD的形式
    box-shadow
    从后台传select的值
    jQuery事件(持续更新中)
    JavaScript对象(持续更新中)
    15分XX秒后订单自动关闭(倒计时)
  • 原文地址:https://www.cnblogs.com/rooney/p/2721021.html
Copyright © 2011-2022 走看看