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

posted @ 2012-10-12 11:24  瑞尼书苑  阅读(1158)  评论(0编辑  收藏  举报