/*
字符串分割的思路:
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;
c++ 字符串分割 思路 代码 测试案例
最新推荐文章于 2023-09-26 22:57:49 发布