2017-10-20 44 views
-2

我試圖分裂一個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'中還會有一個單詞。 –

回答

-2

爲別人想知道如何使用字符做到這一點的實現*,而不是字符串。我的代碼缺少的是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; 
} 
-1

這裏是一個完整的工作代碼與多個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", ' '); 

}