2017-03-27 1 views
-1
vector<string> Util::split(string str, char delimiter){ 
    vector<string> internal; 
    stringstream ss(str); // Turn the string into a stream. 
    string tok; 

    while(getline(ss, tok, delimiter)) { 
    internal.push_back(tok); 
    } 

return internal; 
} 
chaîne

str = "k 1" 1;chaîne de Spliting en variables séparées en C++

getline (art, Tok, ' «)

si je tente de vérifier la taille du vecteur de retour est de taille ONE.

chaîne str = "k, 1,1";

getline (ss, tok, '')

Cependant, si je change le délimiteur pour une virgule et modifier la chaîne tok variable.

la taille serait alors trois

Donc, il y a un problème avec des espaces blancs

Que puis-je faire pour faire ce travail? J'ai été sur cela pendant pratiquement toute la journée.

int main(){ 

    Util src; 
    int runProgram = 1; 
    string input; 

    while(runProgram!=0){ 
     cout << "Input your command to perfrom operation: " << endl; 
     cin >> input; // user inputs "k 1 1" 

     vector<string>sep=src.split(input, ' '); 
     cout << sep.size() << endl; // size is one when it should be 3 

    } 
} 
+0

Le code ci ne fonctionnera pas, peu importe ce qui sera mis en 'tok', puisque le' stringstream' se construit à partir d'une autre variable mystérieuse nommée 'str'. Basé sur la description, il me semble que le code affiché n'est pas du vrai code, mais du code fantastique. Une vraie réponse à une vraie question nécessitera du vrai code, pas du code fantaisie. –

+0

Vous avez raison mon erreur – Marke

+0

Votre code comme montré maintenant [fonctionne parfaitement bien] (http://coliru.stacked-crooked.com/a/062c49efb0278e67). S'il vous plaît fournir un [mcve] qui présente effectivement le problème. – zett42

Répondre

0
#include <iostream> 
using namespace std; 

int delimiter(string & str,char ch){ 
    unsigned int count=1,size=str.size(); 
    if(size==0){ 
      return 0; 
    } 
    for(unsigned int i=0;i<size;i++){ 
      if(str[i]==ch){ 
        count++; 
      } 
    } 
    return count; 
} 

int main (int argc,char* array[]){ 
    string s="1 1 k"; 

    cout<<delimiter(s,' ') << endl; 
}