split函数实现

 

#include <iostream>
#include <sstream>
#include <vector>
#include <string>

using namespace std;

void addstr(const string s, int i, int j, vector<string> &result)
{//从i到分割点j部分子串加入到result,需判断子串是否全为空,有一个不为空则可以
    bool allempty = true;
    for (int x = i; x < j ; x++)
    {//判断子串是否全为空,如果有一个字符不为空,则加入到result
        if (s[x] != ' ')
        {
            allempty = false;
            break;
        }
    }
    if (!allempty)
        result.push_back(s.substr(i, j - i));//从i开始,j-i个字符
}
vector<string> mysplit(const string s, const char delim)
{
    vector<string> result;
    if (s.empty()) return result;
    int i = 0;
    int j = 0;
    while (j < s.size() && s[j] == ' ')
    {//移动到第一个不为空的字符处
        ++i;
        ++j;
    }
    //++j;
    while (j < s.size())
    {//从i到分割点j 放入result中
        if (s[j] == delim)
        {
            addstr(s, i, j, result);
            i = ++j;//i和j都指向下一个字符
        }
        else
            ++j;
    }
    addstr(s, i, j, result);//最后一个子串
    return result;
}


int main() {
    string s = ",he  llo boy, I am a student, come from shangdong";
    vector<string> res1 = mysplit(s, ',');
    for (auto a : res1) {

        cout << a << endl;
    }
    system("pause");
    return 0;
}

 

posted @ 2019-05-23 20:15  前进的code  阅读(474)  评论(0编辑  收藏  举报