• 在C++中实现字符串分割--split


    字符串分割

    在一些比较流行的语言中,字符串分割是一个比较重要的方法,不论是在python,java这样的系统级语言还是js这样的前端脚本都会在用到字符串的分割,然而在c++中却没有这样的方法用来调用。但是在boost中却提供分割方法。

    使用vector实现

    下面是用vector实现的一个简单的split函数,借助string::find函数查找匹配子串的位置,然后截取剩下的字符串之后继续处理,实现对原字符串的完整处理。

    #include<iostream>
    #include<vector>
    #include<string>
    
    using namespace std;
    
    vector<string> split(string &s, string &delim, bool removeEmpty = false, bool fullMatch = false) {
        vector<string> result;
        string::size_type start = 0, skip = 1;
    
        // 使用整个字符串进行查找,之后会直接跳过整个子字符串
        if (fullMatch) {
            skip = delim.length();
        }
    
        while (start != string::npos) {
            // 从start位置开始查找子字符串delim第一次出现的位置
            string::size_type finsh = s.find(delim, start);
    
            if (skip == 0) {
                finsh = string::npos;
            }
    
            // 从start开始到(finsh - start)处获得子字符串
            // 获得匹配字符串之前的字符串
            string token = s.substr(start, finsh - start);
    
            // 对token进行判断并决定是否移除空
            if (!(removeEmpty && token.empty())) {
                // 将匹配字符串之前的字符串放进向量中
                result.push_back(token);
            }
    
            // 判断此时是否到了原字符串的末尾
            if ((start = finsh) != string::npos) {
                // 将子字符串放进向量中,是为了保证原字符串的字符不丢失
                result.push_back(delim);
                // 将查找位置向前移动skip个位置
                start = start + skip;
            }
        }
    
        return result;
    }
    
    int main() {
        string x = "hello,,world",
                delim = ",";
        vector<string> xx = split(x, delim, true, true);
        for (auto item:xx) {
            cout << item << endl;
        }
        cout << "finsh" << endl;
        return 0;
    }
    
  • 相关阅读:
    数据库的读读事务也会产生死锁
    数据库中的two phase locking
    排序合并连接(sort merge join)的原理
    SQL Server2016 原生支持JSON
    公司内部培训SQL Server传统索引结构PPT分享
    postgresql的ALTER经常使用操作
    POJ 1458 Common Subsequence(最长公共子序列LCS)
    Docker 1.3 公布
    spring bean之间的关系:继承;依赖
    hdu 1215 七夕节
  • 原文地址:https://www.cnblogs.com/tingyugetc/p/5451443.html
Copyright © 2020-2023  润新知