C++ 常见字符处理 收录

1.string字符串删除 字符串中 指定字符

std::string& HTTPRequestHandlerImpl::replace_all_distinct(std::string& str, const std::string& old_value, const std::string& new_value)
        {
            for (string::size_type pos(0); pos != string::npos; pos += new_value.length())
            {
                if ((pos = str.find(old_value, pos)) != string::npos)
                {
                    str.replace(pos, old_value.length(), new_value);
                }
                else  { break; }
            }
            return   str;
        }

eg:  replace_all_distinct(strring("abcde"), "cd", "dc");

res: abdce

2.string 字符串 转换 utf-8编码

std::string string_To_UTF8(const std::string & str)  
{  
int nwLen = ::MultiByteToWideChar(CP_ACP, 0, str.c_str(), -1, NULL, 0);  
 
wchar_t * pwBuf = new wchar_t[nwLen + 1];
ZeroMemory(pwBuf, nwLen * 2 + 2);  
 
::MultiByteToWideChar(CP_ACP, 0, str.c_str(), str.length(), pwBuf, nwLen);  
 
int nLen = ::WideCharToMultiByte(CP_UTF8, 0, pwBuf, -1, NULL, NULL, NULL, NULL);  
 
char * pBuf = new char[nLen + 1];  
ZeroMemory(pBuf, nLen + 1);  
 
::WideCharToMultiByte(CP_UTF8, 0, pwBuf, nwLen, pBuf, nLen, NULL, NULL);  
 
std::string retStr(pBuf);  
 
delete []pwBuf;  
delete []pBuf;  
 
pwBuf = NULL;  
pBuf = NULL;  
 
return retStr;  
}  

std::string UTF8_To_string(const std::string & str)  
{  
int nwLen = MultiByteToWideChar(CP_UTF8, 0, str.c_str(), -1, NULL, 0);  
 
wchar_t * pwBuf = new wchar_t[nwLen + 1];
memset(pwBuf, 0, nwLen * 2 + 2);  
 
MultiByteToWideChar(CP_UTF8, 0, str.c_str(), str.length(), pwBuf, nwLen);  
 
int nLen = WideCharToMultiByte(CP_ACP, 0, pwBuf, -1, NULL, NULL, NULL, NULL);  
 
char * pBuf = new char[nLen + 1];  
memset(pBuf, 0, nLen + 1);  
 
WideCharToMultiByte(CP_ACP, 0, pwBuf, nwLen, pBuf, nLen, NULL, NULL);  
 
std::string retStr = pBuf;  
 
delete []pBuf;  
delete []pwBuf;  
 
pBuf = NULL;  
pwBuf = NULL;  
 
return retStr;  

原文地址:https://www.cnblogs.com/xuandi/p/6774570.html