Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/144.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如果有两次相同的字符要分割,则分割函数不起作用_C++_String_Vector_Split - Fatal编程技术网

C++ 如果有两次相同的字符要分割,则分割函数不起作用

C++ 如果有两次相同的字符要分割,则分割函数不起作用,c++,string,vector,split,C++,String,Vector,Split,我正在做一个程序,将字符串拆分成向量,就像在Python中一样,我试图调试这段代码,但我不知道它有什么问题 //split.hpp #include <vector> std::vector<std::string> split(std::string to_split, char split){ std::vector<std::string> result; std::string append; for(int i = 0; i

我正在做一个程序,将字符串拆分成向量,就像在Python中一样,我试图调试这段代码,但我不知道它有什么问题

//split.hpp
#include <vector>

std::vector<std::string> split(std::string to_split, char split){
    std::vector<std::string> result;
    std::string append;
    for(int i = 0; i < to_split.length() ; ++i){
        if(to_split[i] == split){
            result.push_back(append);
            append.clear();
        }
        else append += to_split[i];
    }
    return result;
}

//main.cpp
#include <iostream>
#include "split.hpp"

int main(){
    std::vector<std::string> splitted_string = split("etettest", 't');
    for(int i = 0; i < splitted_string.size(); ++i){ 
        std::cout << splitted_string[i] << "\n";
    }
    std::cout << "\n" << splitted_string.size();
    system("pause>nul");
    return 0;
}

输入:e


预期输入:ees

运行代码,我将获得输入的预期输出:etetest

但是,您忘记将最后一个块添加到结果数组中,因此最后一个分割字符之后的任何内容都将被忽略。etettestend将产生与etettest相同的输出