• c++ 字符串工具类


    #include <string>
    #include "util.h"
    
    namespace strtool{
    
    std::string trim(const std::string& str) {
        std::string::size_type pos = str.find_first_not_of(' ');
        if (pos == std::string::npos) {
            return str;
        }
        std::string::size_type pos2 = str.find_last_not_of(' ');
        if (pos2 != std::string::npos) {
            return str.substr(pos, pos2 - pos + 1);
        }
        return str.substr(pos);
    }
    
    void split(const std::string& str, std::string sep, std::vector<std::string>& ret) {
        if (str.empty()) {
            return;
        }
    
        std::string tmp;
        std::string::size_type pos_begin = str.find_first_not_of(sep);
        std::string::size_type comma_pos = 0;
    
        while (pos_begin != std::string::npos) {
            comma_pos = str.find(sep, pos_begin);
            if (comma_pos != std::string::npos) {
                tmp = str.substr(pos_begin, comma_pos - pos_begin);
                pos_begin = comma_pos + sep.length();
            }
            else{
                tmp = str.substr(pos_begin);
                pos_begin = comma_pos;
            }
    
            if (!tmp.empty()){
                ret.push_back(tmp);
                tmp.clear();
            }
        }
        return;
    }
    
    std::string replace(const std::string& str, const std::string& src, const std::string& dest) {
        std::string ret;
        std::string::size_type pos_begin = 0;
        std::string::size_type pos  = str.find(src);
        while (pos != std::string::npos) {
            ret.append(str.data() + pos_begin, pos - pos_begin);
            ret += dest;
            pos_begin = pos + 1;
            pos = str.find(src, pos_begin);
        }
        if (pos_begin < str.length()) {
            ret.append(str.begin() + pos_begin, str.end());
        }
        return ret;
    }
    
    } // namespace strtool
    #include <vector> //std::vector
    
    namespace strtool{
    
    std::string trim(const std::string& str);
    
    void split(const std::string& str, std::string sep, std::vector<std::string>& ret);
    
    std::string replace(const std::string& str, const std::string& src, const std::string& dest);
    
    } // namespace strtool
    #include <iostream>
    #include <vector>
    #include <string>
    
    void split(const std::string& str, std::string sep, std::vector<std::string>& ret) {
        if (str.empty()) {
            return;
        }
        std::string tmp;
        std::string::size_type pos_begin = str.find_first_not_of(sep);
        std::string::size_type comma_pos = 0;
    
        while (pos_begin != std::string::npos) {
            comma_pos = str.find(sep, pos_begin);
            if (comma_pos != std::string::npos) {
                tmp = str.substr(pos_begin, comma_pos - pos_begin);
                pos_begin = comma_pos + sep.length();
            }
            else{
                tmp = str.substr(pos_begin);
                pos_begin = comma_pos;
            }
    
            if (!tmp.empty()){
                ret.push_back(tmp);
                tmp.clear();
            }
        }
        return;
    }
    
    
    
    int main(void) {
        std::string line = "a	b	c	d";
        std::string sep = "	";
        std::vector<std::string> tokens;
        split(line, sep, tokens);
        int len = tokens.size();
        for (int i = 0; i < len; i++){
            std::cout << tokens[i] << std::endl;
        }
    }
  • 相关阅读:
    [LeetCode] 94. Binary Tree Inorder Traversal 二叉树的中序遍历
    [LeetCode] 103. Binary Tree Zigzag Level Order Traversal 二叉树的之字形层序遍历
    Notepad++ Shortcuts 快捷键
    IplImage 与 QImage 相互转换
    [LeetCode] 105. Construct Binary Tree from Preorder and Inorder Traversal 由先序和中序遍历建立二叉树
    QMessageBox 使用方法
    Qt5 和 Qt4 的一些改动和不同
    Qt5.4 VS2010 Additional Dependancies
    [LeetCode] Construct Binary Tree from Inorder and Postorder Traversal 由中序和后序遍历建立二叉树
    [LeetCode] Best Time to Buy and Sell Stock IV 买卖股票的最佳时间之四
  • 原文地址:https://www.cnblogs.com/i80386/p/4466471.html
Copyright © 2020-2023  润新知