C++ STL没有直接提供标准的字符串分割函数,一般算法实现的时候需要我们自己实现,如何实现高性能的字符串分割函数尤为重要.

下面提供一种方法,进行分割,可以直接拷贝使用

1、使用string 数组存储对应的分割

// 使用lambda表达式实现字符串分割,也可以独立成函数,看个人习惯
auto split = [](const string& s, char delim) -> vector<string> {
    vector<string> vecRes;
    vecAns.reserve(s.size() / 2);  // 预留足够的空间,减少realloc

    string strCur;
    for (char c : s) {
        if (c == delim) {
            if (!cur.empty()) {  // 忽略空字符串
                vecRes.push_back(move(strCur));
            }
            strCur.clear();
        } else {
            strCur += c;
        }
    }

    if (!strCur.empty()) {
        vecRes.push_back(move(strCur));  // 如果 cur 不是空,添加到 vecRes
    }

    return vecAns;
};

// 使用方法如下
string strPath = "/path1//path2//../..././";
vector<string> vecSplitString = split(strPath, "/");

2、使用stringstream分割(to be continued)

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐