c++ 字符串分割 思路 代码 测试案例

/*
	字符串分割的思路:
	1.定义需要分割的字符串变量,分割符号变量,分割起始点坐标变量,存放查询到分隔符所在位置坐标变量
	2.不知道需要分割的次数,所以需要循环分割,这就需要一个循环结束条件,找到字符串结尾就是这个条件
	3.调用 s.find()函数进行查找分隔符的位置
	4.获取分割符前的字符串,存放到集合中
	5.重新获取一下总字符串的长度,使用这种方式的原因是我采用的是每次都是从第0个位置获取,所以字符串需要截断
	6.在循环结束后,把最后不能分割的字符串加入到集合
	
	*/

	std::string s     = "123,456,789, 1";   //需要分割的字符串
	char split_c      = ',';					//分割符号
	size_t pos        = 0;						//分隔符位置
	size_t find_pos   = 0;				//查找的开始位置
	std::vector<std::string>str_s;		//存放分割后的子字符串

	/*
	     find_pos = s.find(split_c, pos));查找分割符第一次出现的位置
		 参数:split_c,分割符号
		       pos,查找的起始位置,从字符串的什么位置开始找
			   find_pos,找到分隔符时,分隔符所在字符串中的坐标
			   std::string::npos,表示找到字符串的结尾
	*/
	while ((find_pos = s.find(split_c, pos))!= std::string::npos)//
	{
		std::string p = s.substr(0, find_pos);		//获取分割后的字符
		str_s.push_back(p);							//分割后的字符存放到集合中
		s = s.substr(find_pos +1, s.length() - 1);  //获取分割一次后,总的字符串的长度
	}
	str_s.push_back(s);								//这里是重点,原因我门每次都获取分隔符之前的字符,最后一次无法分割,但最后还有数据,所以需要添加上
	for (auto i : str_s)
		std::cout << i << std::endl;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值