C++ 如果有两次相同的字符要分割,则分割函数不起作用
我正在做一个程序,将字符串拆分成向量,就像在Python中一样,我试图调试这段代码,但我不知道它有什么问题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
//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相同的输出