美文网首页
C++实现 split

C++实现 split

作者: _SHIZI | 来源:发表于2019-10-22 20:38 被阅读0次

在C++标准库中并没有实现split方法,但是在实际生产中,我们又经常碰到。
在C++11以前我们可以使用以下方法来实现:

static void split(const string& s, vector<string>& tokens, const string& delimiters = " ")
{
        string::size_type lastPos = s.find_first_not_of(delimiters, 0);
        string::size_type pos = s.find_first_of(delimiters, lastPos);
        while (string::npos != pos || string::npos != lastPos) {
                tokens.push_back(s.substr(lastPos, pos - lastPos));
                lastPos = s.find_first_not_of(delimiters, pos);
                pos = s.find_first_of(delimiters, lastPos);
        }
}

在C++11引入regex后,可以使用以下方法:

static void split(const std::string& source, std::vector<std::string>& tokens, const string& delimiters = " ") {
    std::regex re(delimiter);
    
    std::copy(std::sregex_token_iterator(source.begin(), source.end(),re,-1), 
        std::sregex_token_iterator(),
        std::back_inserter(tokens));
}

参考:
https://stackoverflow.com/questions/26328793/how-to-split-string-with-delimiter-using-c
https://en.cppreference.com/w/cpp/regex/regex_token_iterator

相关文章

网友评论

      本文标题:C++实现 split

      本文链接:https://www.haomeiwen.com/subject/kbecvctx.html