• 请不要在回答技术问题时复制粘贴 AI 生成的内容
wsds
V2EX  ›  程序员

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

  •  
  •   wsds · Aug 8, 2018 · 4589 views
    This topic created in 3010 days ago, the information mentioned may be changed or developed.

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

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

    t 就是结果。
    mingl0280
    mingl0280
    Aug 9, 2018
    24
    @agostop 基本不用 boost 路过
    yazoox
    yazoox
    Aug 9, 2018
    25
    也挺好奇的,现在 c++都用什么库?
    裸的 c++用起来,真的老费劲了......
    dychenyi
    dychenyi
    Aug 9, 2018
    26
    23 是最简单的写法。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1340 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 89ms · UTC 21:04 · PVG 05:04 · LAX 13:04 · JFK 16:04
    ♥ Do have faith in what you're doing.