c++ split()实现

在c++中,没有java与python中定义的split()功能的函数,于是自己实现之。

情况1,适用范围,分隔符为字符。思路,记录分隔符的位置,判断需要截取的字符串的下标范围。

vector<string> split(string s,char ch){
    int start=0;
    int len=0;
    vector<string> ret;
    for(int i=0;i<s.length();i++){
        if(s[i]==ch){
            ret.push_back(s.substr(start,len));
            start=i+1;
            len=0;
        }
        else{
            len++;
        }
    }
    if(start<s.length())
        ret.push_back(s.substr(start,len));
    return ret;
}

情况2,使用范围,分隔符为字符串。思路,记录分隔字符串的起始位置,判断需要截取的字符串的下标范围。

vector<string> split(string s,string seprate){
    vector<string> ret;
    int seprate_len=seprate.length();
    int start=0;
    int index;
    while((index = s.find(seprate,start))!=-1){
        ret.push_back(s.substr(start,index-start));
        start = index+seprate_len;
    }
    if(start<s.length())
        ret.push_back(s.substr(start,s.length()-start));
    return ret;
}
时间: 2024-10-31 20:36:32

c++ split()实现的相关文章

SQL Server自定义字符串分割函数——Split

我相信大部分人都碰到过,处理数据的时候,字段的值是以 ',' (逗号)分隔的形式,所以我也不能避免. 然后我才知道,sql 是没有类似于 C# 和 Javascript 这种分割字符串的方法.( Split ) 所以我自己定义了一个 sql 函数(多声明表值函数),代码如下: 1 USE [Test] 2 GO 3 /****** Object: UserDefinedFunction [dbo].[Split] Script Date: 2017/4/14 23:04:08 ******/ 4

C#字符串Split方法的误区

string s = "aaa1bbb2ccc1ddd";        string[] ss = s.Split("12".ToCharArray()); 这句话的意思是1和2每个字符分别是分割关键字,而不是12是分割关键字,一定要弄清晰. 输出值为 aaa bbb ccc ddd

split、rar拆分大文件

split拆分大文件 系统默认自带有 # split -b 2048m aa aa_ -b n[bkm]  b代表512b,k代表1KB,m代表1M 后面aa表示指定文件前缀 结果为:aa_aa aa_ab 合并拆分文件: # cat aa_aa aa_ab > aa rar拆分大文件 # apt-get install rar # rar a -v2048m aa.rar aa 结果为:aa.part1.rar aa.part2.rar 合并并解压: # unrar aa.part1.rar

split 实现(c++ string)

#include <iostream> #include <vector> size_t split(std::string &src, std::vector<std::string> *tokens, std::string sep) { size_t last= 0; size_t index = src.find(sep, last); size_t length = src.size(); while(index != std::string::npo

swift -- 定义空字符串 hasPrefix hasSuffix trim split join range

// 定义空的字符串 var str1 = "" var str2 = String() str1.isEmpty      // 判断字符串是否为空 // 输出字符串中所有的字符 var str3 = "As god name" for c in str3{ println(c) } Int.max   // Int类型的最大值 Int.min   // Int类型的最小值 var arr1 = ["c", "oc", &q

python中的split函数中的参数问题

第一个参数代表的是分割符号,第二个参数表明是split次数. 用下面这个例子测试: str = 'server=mpilgrim&ip=10.10.10.10&port=8080'print str.split('=', 1)[0]print str.split('=', 1)[1]print str.split('=')[0]print str.split('=')[1] 结果是: servermpilgrim&ip=10.10.10.10&port=8080server

[Java]_[初级]_[String的split里的坑]

场景: 1. 有时候需要使用某些字符来作为值的合并存储,比如以@作为分隔符, [email protected]@323232, 用一个属性存储这3个值, 用的时候再拿出来split就可以了. 2. 问题是有时候某个值会缺失,比如第一个值没有的情况, @[email protected]  第2,3个值没有的情况 [email protected]@ ,当然也期望是能返回3个值,只是后边2个值为空字符就行了. 事实上,结果不是这样,即使 2,3个值没有的情况 [email protected]@

guava Splitter 与java 内置的string的split 方法有什么区别.

java内置的会忽略空内容,guava Splitter不会忽略.或者可以自由选择的忽略. /** * {@code Splitter}和{@code Joiner} 这两个对于map的相反的操作,在web框架例如spring mvc中用到过. * * 对于get url后面的参数和pos form中前端参数的连接和后端的拆分都有用到.每个框架的处理思维是一样的. * * @author doctor * * @since 2015年3月14日 下午9:00:17 */ ............

文件的切分split和合并cat

大纲 1.文件的切分和合并工具 2.文件的切分:split 3.语法格式 4.split实战演练 5.合并:cat 6.文件完整性校验 1.文件的切分和合并工具 有时候我们可能遇见这种情况,有时文件比较大,想上传到服务器上,但由于服务器管理员为了安全考虑,把上传空间作了限制,比如只能上传20M的文件,如果我们文件的体积在100M的,有时就是压缩也不能满足服务器上传的限制.这时我们就要考虑切分文件了,把100M的文件,切分成若干份,然后传到服务器上.切分后的每个文件都是原文件的组成部份.如果要获得

HBase的几种调优(GC策略,flush,compact,split)

HBase的几种调优(GC策略,flush,compact,split) 一:GC的调优 1.jvm的内存 新生代:存活时间较短,一般存储刚生成的一些对象 老年代:存活时间较长,主要存储在应用程序中生命周期较长的对象 永久代:一般存储meta和class的信息 2.GC策略 Parrallel New Collector,垃圾回收策略 并行标记回收器(Concurrent Mark-Sweep Collector) 3.Parrallel New Collector 速度快,但是数据量一大,容易