1、string字符串按指定分隔符分割,存入vector<string>容器
vector<string> StdStringSplit(const string& src, const string& separator)
{
vector<string> dest;
//字符串或分隔符为空则返回原字符串
if (src.empty() || separator.empty())
{
dest.push_back(src);
return dest;
}
string temp;
size_t pos = 0, offset = 0;
//从offset位置往后遍历,查找分隔符
while ((pos = src.find_first_of(separator, offset)) != string::npos)
{
temp = src.substr(offset, pos - offset);
dest.push_back(temp);
offset = pos + 1;
}
temp = src.substr(offset);
dest.push_back(temp);
return dest;
}
2、多个string字符串按照指定拼接符拼接,返回一个新的string字符串
string StdStringJoin(vector<string>& vec, const string& separator)
{
string strDest;
for (int i = 0; i < vec.size(); i++)
{
strDest += vec[i];
strDest += separator;
}
return strDest.substr(0, strDest.length() - separator.length());
}
3、字符串格式化,返回string字符串
string StdStringFormat(const char* pFormat, ...)
{
va_list args;
va_start(args, pFormat);
int nLen = _vscprintf(pFormat, args);
char* pBuf = new char[nLen + 1];
vsprintf(pBuf, pFormat, args);
va_end(args);
string str(pBuf);
delete[]pBuf;
return str;
}
4、将string字符串中所有是src替换成dst
string StdStringReplace(string& base, string src, string dst)
{
string::size_type pos = 0;
string::size_type srclen = src.size();
string::size_type dstlen = dst.size();
while ((pos = base.find(src, pos)) != string::npos)
{
base.replace(pos, srclen, dst);
pos += dstlen;
}
return base;
}
5、字符串大小写转换,int __cdecl toupper(_In_ int _C)和int __cdecl tolower(_In_ int _C)是C库中的函数
//小写转大写
void ToUpperString(string &str)
{
transform(str.begin(), str.end(), str.begin(), toupper);
}
//大写转小写
void ToLowerString(string &str)
{
transform(str.begin(), str.end(), str.begin(), tolower);
}
char ToLower(char ch)
{
if (ch >= 'A'&&ch <= 'Z')
return ch + 32;
else
return ch;
}
char ToUpper(char ch)
{
if (ch >= 'a'&&ch <= 'z')
return ch - 32;
else
return ch;
}
6、string与int类型相互转换 #include <sstream>
//int转string
int n = 0;
std::stringstream ss;
std::string str;
ss << n;
ss >> str;
//string转int
std::string str = "123";
int n = atoi(str.c_str());