C++ 以多字符为分隔符分割字符串

原创 2016年05月31日 15:32:47

发现,之前写的博客中,有一种分割方式是在是有点落后.因此改进了一下,这里主要是第一个函数,百度中可以查到.

#include <iostream>
#include <vector>
#include <string>
using namespace std;
char *strsep(char **stringp, const char *delim)
{
	//判断stringp是否为空,提高程序的容错性
	char *s;
	const char *spanp;
	int c, sc;
	char *tok;
	if ((s = *stringp)== NULL)
		return (NULL);
	for (tok = s;;) {
		c = *s++;
		spanp = delim;
		do {
			if ((sc =*spanp++) == c) {
				if (c == 0)
					s = NULL;
				else
					s[-1] = 0;
				*stringp = s;
				return (tok);
			}
		} while (sc != 0);
	}
}

void pushToVec(std::vector<std::string>&obj,const char *param,std::string token)
{
	char *p = (char*)param;
	char *key_point;
	while(p)
	{
		while ( key_point = strsep(&p,token.c_str()))//关键字为c或d,它们连续出现了
		{
			//函数遇到token时,key_point指向token返回
			if (*key_point == 0)
				continue;
			else
				break;
		}
		if (key_point)
			obj.push_back(key_point);
	}
}

int main()
{
	vector<string> obj;
	string test("145,456,789,rtyy,http:www.baidu.com;");
	string token(",:.;");								//使用","号,":"号,"."号,";"做分隔符
	pushToVec(obj,test.c_str(),token);
	for (size_t i = 0;i< obj.size();i++)
	{
		cout<<obj[i]<<endl;
	}
	return 0;
}

char *strsep(char **stringp, const char *delim)
是用来分割的主要函数,pushTOVec函数仅仅是做了一个封装,将分割后的字符放到一个vector中用来看分割的效果,其实直接打印出来也可以.该函数可以传入多个分割字符,也可以只传入一个.

可以对比一下这个,我早些时候写的:http://blog.csdn.net/wangshiqilin_fjy/article/details/40982417

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

c/c++ 中的Split函数(字符串自动分割)

一、 split()方法用于将一个字符串分割成字符串数组。 语法:stringObject.split(separator,howmany) 参数介绍:separator:必需。字符串或正则表达式...

C++常用字符串分割方法

来源:http://www.jb51.net/article/55954.htm 一、用strtok函数进行字符串分割 原型: char *strtok(char *str, const...

C++ 按指定分隔符拆分字符串

c++的strtok函数完成按指定分隔符拆分字符串的任务

c++输入带分隔符

#include #include //是赋值以逗号为分隔符 using namespace std; int main() { int a,b...

c++逗号分隔符文本读取

#include #include #include using namespace std; char** ppInstrumentID; //char *pInstrumentID...

C++中字符串的分割

坚持走下去,坚持下去!男子汉要能惹! —题记下面开始正题,C++中字符串的分割。 1. 使用strtok函数进行字符串的分割 2. 使用stringstream类配合getline函数进行字符串的...

C++实现字符串的分割和替换

C++实现字符串的分割和替换,作为平时代码库的储备,仅供各位猿友参考.

C/C++如何把一个特定分隔符分割的字符串划分为一个字符串数组,strtok(char *,char*)分割函数

#include #include int main(void) { char str[] = "2015-3-22,abcd,efg,hij,klmn,opq,rst,...

C++字符串切割的两种方法

字符串切割的使用频率还是挺高的,string本身没有提供切割的方法,但可以使用stl提供的封装进行实现或者通过c函数strtok()函数实现。1、通过stl实现涉及到string类的两个函数find和...

C++中使用指定字符分割字符串

很久前写的一个程序,当时为了回答百度知道一个提问。(http://zhidao.baidu.com/question/100587299.html)  #include#include#include...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C++ 以多字符为分隔符分割字符串
举报原因:
原因补充:

(最多只允许输入30个字)