C++字符串分割

最近在研究C++,遇到一个问题需要将类似如下的字符串分割开:
17;"_testCube##e17##13##Small";17;2;0;0;1;0;;;;

  • 第一种方法:采用C++自带的方法strtok()进行分割,代码如下:
//参数我不喜欢用指针和引用这样会改变原内存空间
vector<std::string> split(string res,const char reg) 
{
    vector<string> v_value;
    char* pstr = strtok(const_cast<char*>(res.c_str()),&reg);
    while(pstr)
    {
        v_value.push_back(pstr);
        pstr = strtok(NULL,&reg);
    }
    return v_value;
}

这样的方法有个缺陷,就是我们看到字符串后面有多个分号,按照需求应该分割11参数,可是strtok()分割两个分号返回的是空指针,所以需要我们对此进行改进,留在我后续完善吧,下面介绍第二种方法。

  • 第二种方法:
    使用了size_type find( CharT ch, size_type pos = 0 );方法
vector<string> split(string res,const char reg)
{
    vector<string> v;
    signed int start;
    signed int end = res.find(reg,0);
    v.push_back(res.substr(0,end));
    start = end+1;
    while ((end = res.find(reg,start))>0)
    {
        v.push_back(res.substr(start,end-start));
        start = end+1;
    }
    return v;
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 在一些编程练习中,经常会对字符串进行处理,往往处理之前都会对字符串进行分割来提取各部分信息。在C++中虽然没有像p...
    litexy阅读 75,692评论 0 10
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 32,005评论 18 399
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,689评论 19 139
  • 第五十九章 百人接力小说(五十九)|回眸一笑 1. 第六十天 | 回到原点 ping~!什么东西碎了的声音,我睁开...
    帆过声阅读 4,112评论 10 51
  • 无代价的自由是浪漫主义者的虚构。 真正的自由,须以毁灭一切为代价。
    Rich_Zhao阅读 1,170评论 0 0