C++分割字符串

#include <iostream>
#include <string>
#include <vector>

//字符串分割函数
std::vector<std::string> split(std::string str,std::string pattern)
{
  std::string::size_type pos;
  std::vector<std::string> result;
  str+=pattern;            //扩展字符串以方便操作
  int size=str.size();      //str.size() 表示str中有几个元素

  for(int i=0; i<size; i++)
  {
    pos=str.find(pattern,i);   //str.find(pattern,i)表示从i位置开始找pattern,如果找到,则返回位置,否则返回string::npos
    if(pos < size)
    {
      std::string s=str.substr(i,pos-i); //str.substr(i,pos-i)表示从i位置开始切割,切割长度为pos-i长
      result.push_back(s);      //将结果push出去
      i=pos+pattern.size()-1;   //长度变化,再继续找下一个pattern
    }
  }
  return result;
}

int main()
{
  std::string str,pattern;    //设string类型的str和pattern
  str="sss/ddd/ggg/hh";
  pattern="/";
  std::vector<std::string> result=split(str,pattern);    //std::vector<std::string> 可以看做string的指针或者数组
  std::cout<<"The result:"<<std::endl;
  for(int i=0; i<result.size(); i++)
  {
    std::cout<<result[i]<<std::endl;      //将分割的结果输出
  }

  std::cin.get();     //获取最后一个字符并保存,结束进程
  std::cin.get();     //如果这两句话放在程序中间,则后面部分的程序不会再运行
  return 0;
}

结果显示如下







  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值