首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
华为云
V2EX  ›  程序员

c++不用 boost 库,怎么切割字符串?

  •  
  •   wsds · 75 天前 · 1552 次点击
    这是一个创建于 75 天前的主题,其中的信息可能已经有所发展或是发生改变。

    不用 boost 库,最简单的方式, 怎么拿到 test123

    test/test123
    
    26 回复  |  直到 2018-08-09 14:02:59 +08:00
        1
    winterfell30   75 天前
    str.substr(str.rfind('/'))?
        2
    MeteorCat   75 天前 via Android
    ........tinyhttp 在 http 解析的时候有针对字符串截断,参考下用\0 截断
        3
    agostop   75 天前
    我想问下,现在做 C++开发的,是不是基本离不开 boost ?
        4
    changnet   75 天前 via Android
    看具体需求,我很多时候都是 for 循环去找
        5
    wsds   75 天前
    @winterfell30 有这么简单的方法 ?网上没查到过这个答案
        6
    singer   75 天前 via iPhone
    STL 不行么?
        7
    glacer   75 天前
    自己实现 split 函数不就行了么,循环过一遍而已
        8
    SPACELAN   75 天前
    emmm,写 c++的,从来不用 boost
        9
    gnaggnoyil   75 天前   ♥ 1
    range-v3 就有现成的`ranges::view::split`.不过你确定你这不是个 X-Y 问题?我觉得你可能更需要`ranges::view::tokenize`
        10
    innoink   75 天前 via Android
    你难道不去 cppreference.com 上看看 std::string 有哪些成员函数么?
        11
    byteli   75 天前 via Android
    string 这么蛋疼的东西还是用成熟的好,比如 qstring
        12
    shilyx   75 天前
    @agostop 一般项目中能不引入 boost,则不引入
    一旦引入之后,就再无所顾忌
        13
    tangxiaoqiang123   75 天前
    std::string split(char* str, const char* sep) {
    std::stringstream o;
    char* s = strtok(str, sep);
    while (s != NULL) {
    o << s;
    s = strtok(NULL, sep);
    }
    return o.str();
    }
        14
    winterfell30   75 天前
    @wsds 如果是像你举的那个例子这么简单这样就可以了,要完全实现 split 的功能还是自己写一个函数吧
        15
    hanminghui   75 天前
    常备 cppreference,学到了
        16
    lolcat   75 天前
    #include <string.h>
    ....
    char *p=(strchr("test/test123",'/')+1);
    这应该是最简单的方法了吧?
        17
    dosmlp   75 天前
    自己写一个分割函数就完了,多大点事还发个帖子
        18
    yanaraika   75 天前
    range-v3 吧,header-only,比起 boost 小太多,无痛引入
        19
    agagega   75 天前
    <algorithm> 里面的 find
        20
    agostop   74 天前
    boost 是个可以让 C++变 java 的神奇之库吗?
        21
    v2qwsdcv   74 天前
        22
    araraloren   74 天前
    ~~ 推荐 strtok 的都是什么心态。。
        23
    mingl0280   74 天前
    string s("test/test123");
    int lastSlash = s.rfind('/');
    if (lastSlash != s::npos)
    string t = s.substr(lastSlash+1);

    t 就是结果。
        24
    mingl0280   74 天前
    @agostop 基本不用 boost 路过
        25
    yazoox   74 天前
    也挺好奇的,现在 c++都用什么库?
    裸的 c++用起来,真的老费劲了......
        26
    dychenyi   74 天前
    23 是最简单的写法。
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   1285 人在线   最高记录 3762   ·  
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.1 · 20ms · UTC 16:50 · PVG 00:50 · LAX 09:50 · JFK 12:50
    ♥ Do have faith in what you're doing.
    沪ICP备16043287号-1