2017-10-04 1 views
-6

je un tableau de chaînes numériques par exemple 156.983.425 Je veux chercher si elle a « 34 » ou non si elle a « 34 » at-il 6 avant '34' ou pas?recherche sous-chaîne dans la chaîne et vérifier une autre chaîne avant que

Merci pour votre aide

+5

Je vote pour clore cette question hors-sujet parce que SO n'est pas un service d'écriture de code. S'il vous plaît montrer vos efforts. – EdChum

+0

On dirait que vous voulez utiliser 'std :: string :: find' et' if'. Codage heureux! – user4581301

Répondre

0

Ici ya go, utilisez std::string::find:

// Notice the double quotes 
std::string::size_type position = my_string.find("34"); 
bool found = 
((position != std::string::npos) && (position > 0) && (my_string[position - 1] == '6')); 

La méthode find renvoie la position de sous-chaîne ou std::string::npos si elle ne se trouve pas.

La position doit être supérieure à 0, en raison de l'exigence «avant».

Si les deux conditions sont satisfaites, l'emplacement de caractère avant le "34" est vérifié pour '6' et affecté à une variable booléenne.

+0

Que se passe-t-il si '" 34 "' est trouvé à la position '0'? – user0042

+0

La variable 'found' est définie sur' false', indiquant que l'exigence n'est pas satisfaite. Comme l'opérateur '&&' est en court-circuit, l'évaluation s'arrête lorsqu'un terme est évalué à false. Ainsi, le dernier terme n'est pas évalué avec 'position' est zéro. –

+0

Ah, désolé. J'ai négligé la condition '(position> 0)'. – user0042