• std::string 字符串切割


    在很多字符串类库里都实现了split函数。不过在std里没有实现。在这里拿出几个:

    1. 用单字符作为分隔

     1 #include <string>
     2 #include <vector>
     3 using namespace std;
     4  
     5 vector<string> split(string strtem,char a)
     6 {
     7         vector<string> strvec;
     8  
     9         string::size_type pos1, pos2;
    10         pos2 = strtem.find(a);
    11         pos1 = 0;
    12         while (string::npos != pos2)
    13         {
    14                 strvec.push_back(strtem.substr(pos1, pos2 - pos1));
    15  
    16                 pos1 = pos2 + 1;
    17                 pos2 = strtem.find(a, pos1);
    18         }
    19         strvec.push_back(strtem.substr(pos1));
    20         return strvec;
    21 }

    2. 由多个分隔符来分隔:

     1 std::vector<std::string> splitString(std::string srcStr, std::string delimStr, bool repeatedCharIgnored)
     2 {
     3     std::vector<std::string> resultStringVector;
     4     std::replace_if(srcStr.begin(), srcStr.end(),
     5         [&](const char& c){if (delimStr.find(c) != std::string::npos){ return true; } else{ return false; }}/*pred*/, delimStr.at(0));
     6     //将出现的所有分隔符都替换成为一个相同的字符(分隔符字符串的第一个)
     7     size_t pos = srcStr.find(delimStr.at(0));
     8     std::string addedString = "";
     9     while (pos != std::string::npos) {
    10         addedString = srcStr.substr(0, pos);
    11         if (!addedString.empty() || !repeatedCharIgnored) {
    12             resultStringVector.push_back(addedString);
    13         }
    14         srcStr.erase(srcStr.begin(), srcStr.begin() + pos + 1);
    15         pos = srcStr.find(delimStr.at(0));
    16     }
    17     addedString = srcStr;
    18     if (!addedString.empty() || !repeatedCharIgnored) {
    19         resultStringVector.push_back(addedString);
    20     }
    21     return resultStringVector;
    22 }
  • 相关阅读:
    template.js简单入门
    Tortoisegit和GitHub使用入门
    自定义Http请求头并且获取
    Dapper基础入门
    StackExchange.Redis在net中使用
    领域驱动设计(DDD)
    Java动态代理机制详解(JDK 和CGLIB,Javassist,ASM) AspectJ
    重构流程
    性能优化方法论举例(***)
    线上紧急问题,如宕机、卡顿、bug等,如何快速反应和解决,具体解决方案
  • 原文地址:https://www.cnblogs.com/tyche116/p/9377330.html
Copyright © 2020-2023  润新知