• C++分隔字符串split


    split

    C++标准库中没有提供split分隔字符串的函数,哎。

    实现一

    下面的实现需要指定分隔符的集合delimiters,以及是否将连续的分隔符看作同一个分隔compress

    enum class TokenCompress {
        On,
        Off
    };
    
    /**
     * 分隔字符串
     * @param s 输入字符串
     * @param delimiters 分隔符集合
     * @param compress 是否将连续的分隔符看作同一个分隔
     * @return 分隔的子字符串列表
     */
    std::vector<std::string> split(const std::string& s, const std::string& delimiters, TokenCompress compress) {
        std::vector<std::string> tokens;
        std::string::size_type beg = 0;
        std::string::size_type end;
        while (std::string::npos != (end = s.find_first_of(delimiters, beg))) {
            tokens.push_back(s.substr(beg, end - beg));
            beg = TokenCompress::On == compress ? s.find_first_not_of(delimiters, end) : end + 1;
        }
        tokens.push_back(std::string::npos == beg ? std::string() : s.substr(beg));
        return tokens;
    }
    

    使用boost::split

    #include <boost/algorithm/string.hpp>中,提供了boost::split函数:

    #include <boost/algorithm/string.hpp>
    
    int main(int argc, char const *argv[])
    {
        std::vector<std::string> tokens;
        boost::split(tokens, "12 34", boost::is_any_of(" "), boost::token_compress_on);
        for (auto& t : tokens) {
            std::cout << "[" << t << "]" << std::endl;
        }
    
        return 0;
    }
    
  • 相关阅读:
    左眼右眼
    Mac 的“任务管理器” —— 活动监视器
    [分享] VIM 常用命令及游戏练级
    iOS 7 如何关闭已打开的应用(App)
    iPhone 如何设置彩信 ?
    JavaScript —— attachEvent 方法的使用
    习惯&感恩
    MySQL 基础 备份和恢复
    Python 数据结构 树
    Python 正在表达式
  • 原文地址:https://www.cnblogs.com/HachikoT/p/13823461.html
Copyright © 2020-2023  润新知