拆分实施*

问题描述:

我试图分裂一个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; 
    } 
} 

这将只打印你好

+0

你能提供一个代码与输入,所以可以尝试吗? www.ideone.com –

+0

是否有原因使用'std :: vector >'而不是'std :: vector '?和'char *'而不是'std :: string'? –

+0

除非最后一个字符是分隔符,否则当循环结束时,'c_word'中还会有一个单词。 –

为别人想知道如何使用字符做到这一点的实现*,而不是字符串。我的代码缺少的是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", ' '); 

}