c++分隔字符串和移除字符串左右指定字符的函数
版权声明:
本文为博主原创文章,转载请声明原文链接...谢谢。o_0。
更新时间:
2017-11-15 18:41:11
温馨提示:
学无止境,技术类文章有它的时效性,请留意文章更新时间,如发现内容有误请留言指出,防止别人"踩坑",我会及时更新文章
分隔字符串
分隔结果会保存到 vector<string>
void Http::SplitString(const string& s, vector<string>& v, const string& c) { std::string::size_type pos1, pos2; pos2 = s.find(c); pos1 = 0; while (std::string::npos != pos2) { v.push_back(s.substr(pos1, pos2 - pos1)); pos1 = pos2 + c.size(); pos2 = s.find(c, pos1); } if (pos1 != s.length()) v.push_back(s.substr(pos1)); }
使用方法
//保存分隔结果
vector<string> arr;
string headers="要分隔的字符串";
SplitString(headers, arr, "\r");
使用C函数分隔字符串
char str= "a,b,c,d*e"; const char * split = ","; char * p; p = strtok((char*)str, split); while (p != NULL) { printf ("%s\n",p); //添加处理代码 //...... p = strtok(NULL, split); }
因为strtok支持多个分割符, 我们将本示例中的分隔符改成,*那么就可以用 , 或 *分隔啦
上面函数只可以用单个的字符来分隔,如果想用一个字符串做为分隔符可以用下面的函数实现,使用strstr这个函数进行分隔,这个函数的功能是返回第一次找到的这个字符串的指针,原理是找到后就把这个字符替换成\0
void SplitString(string ch, const char* dem, vector<string>& strArr) { //使用静态内部变量,每次调用时释放上次的内存 int le = ch.length(); char* c = new char[le+ 1]{ 0 }; strcpy(c, ch.c_str()); char* haystack = c; char* result = NULL; while ( (result = strstr(haystack, dem)) != NULL) { result[0] = '\0'; string s = haystack; strArr.push_back(s); haystack = result + strlen(dem); } string s1 = haystack; strArr.push_back(s1); delete[] c; }
移除字符串左右指定字符
std::string LeftTrimString(const std::string& strSource, const std::string& strDrop) { std::string strDstString(strSource); return strDstString.erase(0, strDstString.find_first_not_of(strDrop)); } std::string RightTrimString(const std::string& strSource, const std::string& strDrop) { std::string strDstString(strSource); return strDstString.erase(strDstString.find_last_not_of(strDrop) + 1); } std::string TrimString(const std::string& strSource, const std::string& strDrop) { return LeftTrimString(RightTrimString(strSource, strDrop), strDrop); }