在python,c#等语言中,string都是默认提供split这个函数的,C++里面却没有默认实现,但又经常会用到,所以就简单实现了一个:

简单使用代码如下:

输出为:

当然,一般split我们还是使用字符分割比较多。
另外也说一个问题,stl里面string的find和rfind方法是可以查找字符串的,但是find_last_of和find_first_of只能查找字符,即使传入的参数是字符串,查找的也是字符。

关于在函数调用时传递string引用的必要性

其实我想只要能看到这篇博客的朋友,又是学过C/C++的都应该知道,如果一个对象需要作为函数调用的一个参数,同时对象分配的内存又非常大的时候,应该使用con...

阅读全文

关于在“写时拷贝”发生的情况下直接操作string中内容出现的问题

注:本文是公司同事的一个分享,由于很有代表性,特分享在此,希望对大家有用。 上次welkin在处理一个豆瓣的cgi时遇到1个奇怪的问题,就是对一个string对象的...

阅读全文

string转化大小写(C++)

如何将一个字符串转换成大写或者小写?这是字符串匹配中经常需要做的事情,然而C++的Standard Library并没有提供将std::string转成大写和小写的功能,只有在...

阅读全文

12则回应给“一个简单的stl中string的split函数”

  1. ww说道:

    也可以考虑用下面这个:
    strtok的介绍
    功 能: 查找由在第二个串中指定的分界符分隔开的单词
    用 法: char *strtok(char *str1, char *str2);
    #include ;
    #include ;

    int main(void)
    {
    char input[16] = “abc,d”;
    char *p;

    strtok places a NULL terminator
    in front of the token, if found
    p = strtok(input, “,”);
    if (p) printf(“%s\n”, p);

    A second call to strtok using a NULL
    as the first parameter returns a pointer
    to the character following the token
    p = strtok(NULL, “,”);
    if (p) printf(“%s\n”, p);
    return 0;
    }

    [回复]

    Terrence 回复:

    同意~
    用strtok封装一个split会少写些代码,说不定速度还会快些。

    [回复]

    Dante 回复:

    The strtok() function uses a static buffer while parsing, so it’s not thread safe. Use strtok_r() if this matters to you.

    这是man里的说明哦,如果用strtok_r可能的确更快一些~

    [回复]

    ww 回复:

    汗一个, 刚知道man还有这个功能, 学习了

    [回复]

  2. hwywhywl说道:

    请教下博主,vimscript中如何获得当前打开文件的文件类型。

    [回复]

    Dante 回复:

    &ft 就是。
    可以执行一下
    :echo &ft
    试试。

    [回复]

  3. hwywhywl说道:

    嗯,谢谢博主,看了博主那篇《Vim在源代码中自动添加作者信息》,对这篇的vimscript做了一下修改,支持对pyton文件得注释。

    [回复]

    Dante 回复:

    哈,举一反三,加油~

    [回复]

  4. 熊猫说道:

    支持博主!

    [回复]

  5. sw说道:

    split代价有点大的说。所以C++不提供。另外split和正则配合才是最完美的。

    [回复]

    Dante 回复:

    呃。。。即使效率低下,提供一个现成的也好呀。。。

    [回复]

发表评论