c++分隔字符串和移除字符串左右指定字符的函数

来源:赵克立博客 分类: C/C++ 标签:C/C++发布时间:2017-10-23 10:31:40最后更新:2017-11-15 18:41:11浏览:1078
版权声明:
本文为博主原创文章,转载请声明原文链接...谢谢。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);
}



微信号:kelicom QQ群:215861553 紧急求助须知
Win32/PHP/JS/Android/Python