使用向量和字符*拆分实现

split implementation using vectors and char*

本文关键字:拆分 实现 字符 向量      更新时间:2023-10-16

我正在尝试使用嵌套向量基于分隔符拆分字符*,但是字符*的最后一个单词似乎没有添加到向量中>

vector<vector<char>> split(char* word, const char de){
    vector<vector<char>> words;
    vector<char> c_word;
    while(*word){
        if(*word == de){
            words.push_back(c_word);
            c_word.clear();
            word++;
            continue;
        }
        c_word.push_back(*word);
        word++;
    }
    return words;
}

用法示例:

int main() {
    char *let = "Hello world!";
    vector<vector<char>> words = split(let, ' ');
    for(int x = 0;x < words.size();x++){
        for(int y = 0;y < words[x].size();y++){
            cout << words[x][y];
        }
        cout << endl;
    }
}

这将只打印你好

这是一个完整的工作代码,带有多个分寸

vector<vector<char>> split(char* word, const char de) {
    vector<vector<char>> words;
    vector<char> c_word;
    int index = 0;
    int j = 0;
    char *temp = word;
    int numspaces = 0;
    while (*word) {
        if (*word == de) {
            words.push_back(c_word);
            c_word.clear();
            word++;
            j = index;
            numspaces++;
        }
        index++;
        c_word.push_back(*word);
        word++;
    }
    j +=numspaces;
    char *sub = &temp[j];
    c_word.clear();
    while (*sub)
    {
        c_word.push_back(*sub);
        sub++;
    }
    words.push_back(c_word);
    return words;
}
void main()
{
    vector<vector<char>> result = split("Hello World! Ahmed Saleh", ' ');
}

对于其他想知道如何使用 char* 而不是字符串进行此实现的人。我的代码缺少的是单词的最终c_word添加,因为当它到达空终止符并且不添加最后一个单词时,while 已经结束,这是固定代码:

   vector<vector<char>> split(char* word, const char de){
    vector<vector<char>> words;
    vector<char> c_word;
    while(*word){
        if(*word == de){
            words.push_back(c_word);
            c_word.clear();
            word++;
            continue;
        }
        c_word.push_back(*word);
        word++;
    }
    words.push_back(c_word);
    return words;
}