我正在尝试使用嵌套向量基于分隔符拆分char *但是char *的最后一个单词似乎没有添加到向量>
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;
}
}
这将只打印Hello
答案 0 :(得分:-1)
这是一个包含多个分隔符的完整工作代码
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", ' ');
}
答案 1 :(得分:-2)
对于其他任何想知道如何使用char *而不是string进行此实现的人。我的代码缺失的是最后一个c_word添加到单词,因为while到达null终止符时已经结束并且没有添加最后一个单词,这是固定代码:
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;
}