2015-11-24 1 views
-4

Je voulais récupérer toutes les valeurs/mots avant « = »obtenir toutes les std :: string de ou premier mot est avant que le caractère « = »

Ex: 
    A = my first variable, I wanted to get all the strings; 
    var2 = I wanted to get this variable also; 
    var3 = jcdksjfckjdsckjdscjkdsbckjdsncjsjd; 

Maintenant, je voulais récupérer toutes les variables (A, var2, var3) de ce qui précède texte (C++ std :: string).

Mise à jour: Une voie possible est

vector<string> myClass::getVariablesFromDescription(string f_description) 
{ 
    vector<string> l_variables; 

    stringstream l_desc; 
    l_desc << f_description; 

    string l_temp; 
    string l_prvStr = string(); 

    for(int i=0; l_desc >> l_temp ; i++) 
    { 
     if(l_temp == string("=")) 
     { 
      l_variables.push_back(l_prvStr); 
     } 

     l_prvStr = l_temp; 
    } 

    return l_variables; 
} 
+0

peut faire l'analyse de chaîne de style C (char par char), Mais en regardant si une fonction ready-made ou un moyen disponible pour std :: string. – NDestiny

+0

Jetez un oeil à l'interface ['std :: string'] (http://en.cppreference.com/w/cpp/string/basic_string), il y a des fonctions membres qui peuvent le rendre un peu plus propre que votre écriture le code d'analyse vous-même. (spécifiquement, 'find' et' substr' devraient être utiles) – Praetorian

+0

Je les ai regardés avant seulement, nous pouvons obtenir des index de '=' avec find, Mais alors comment puis-je trouver un mot avant de = ??? n'importe quel indice – NDestiny

Répondre

0

Vous pouvez créer une nouvelle chaîne, commencer à copier l'octet il par octet d'origine et arrêtez quand vous détectez un « = ».

string example = "var69 = asdfghjkl"; 
string var_name; 

for(int i=0; i<example.size(); i++) 
{ 
    if(example[i] == '=') break; 
    var_name += example[i]; 
} 
0

Je ne peux pas encore commenter, mais vous avez demandé un indice.

find renvoie une position où le signe = est. Vous savez également que vous avez commencé à 0. Ensuite, vous pouvez obtenir la chaîne de 0 à positionner et copier juste cela.

+0

qu'en est-il d'autres variables, son texte continu et il n'y a pas de délimiteurs. – NDestiny

+0

Je ne suis pas sûr de ce que vous voulez dire, dans la question à laquelle j'ai répondu, il voulait juste que toutes les données de la position 0 au premier = signe. Je lui ai donné exactement ça. Trouver par défaut la position 0 sans avoir à le spécifier. J'ai écrit le code à la maison et cela a fonctionné comme prévu, je ne me souviens pas de m'envoyer un email à moi-même. Là encore, il voulait un indice, alors faire tout cela ne serait pas vraiment un indice non plus. Comme je l'ai dit, je ne peux pas commenter, donc seule la façon de donner un indice est la suivante. – MikeL