2015-08-15 4 views
0

L'entrée est une entrée de chaîne standard. Comme ça.Fractionner une chaîne plus longue et arrêter si un caractère particulier est trouvé

"Anand, Ramesh, Suresh # Anand, Ramesh, Suresh, Suresh, Anand"

Je veux obtenir tous les noms avant que le # et le stocker dans un tableau. Et utilisez les noms après le # pour faire une opération.

Comment copier les trois premiers noms avant # dans un tableau. Jusqu'à présent, j'ai compris comment copier une chaîne séparée par une virgule. Je ne pouvais pas trouver une solution pour arrêter après qu'un élément particulier soit trouvé. Comment puis-je arrêter quand je rencontre un #. Voici mon code jusqu'à présent:

void findCombination(string input) 
{ 
    stringstream ss(input); 
    string buffer; 
    vector<string>names; 
    int i=0; 

    while(getline(ss,buffer,',')) 
    { 
     names.push_back(buffer); 
    } 


    for(int i=0;i<names.size();i++) 
      cout << names[i] <<endl; 

    //return NULL; 

} 
+0

1.découpage sur # #. 2. puis faites de nouveau la division en fonction de ',' sur le 0e index. –

+0

@AvinashRaj J'ai utilisé un vecteur pour prendre la première sous-chaîne avant le #. Et essayé d'assigner la valeur à ss (sstream) en utilisant ss << substream [0]. mais cela n'a pas fonctionné pour une raison quelconque. 0ème emplacement a la chaîne avant le # – Shivji

+0

essayez une première 'getline()' avec '#' comme séparateur – Christophe

Répondre

0

Il y a beaucoup de façons de le faire. Le plus simple serait:

void findCombination(string input) 
{ 
    string filteredinput(input,0, input.find('#')); 
    stringstream ss(filteredinput); 
    ... // rest of your code unchanged 
}