拆分实施*
问题描述:
我试图分裂一个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;
}
}
这将只打印你好
答
为别人想知道如何使用字符做到这一点的实现*,而不是字符串。我的代码缺少的是c_word的单词最后加,因为虽然已经是当它到达空终止过,也不会增加一锤定音,这是固定的代码:
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;
}
答
这里是一个完整的工作代码与多个delimeters
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", ' ');
}
你能提供一个代码与输入,所以可以尝试吗? www.ideone.com –
是否有原因使用'std :: vector>'而不是'std :: vector '?和'char *'而不是'std :: string'? –
除非最后一个字符是分隔符,否则当循环结束时,'c_word'中还会有一个单词。 –