392 votes

Comment puis-je vérifier si un C ++ <string> commence par une certaine chaîne et convertit une sous-chaîne en int?

Comment faire ce qui suit (pseudo-code Python) en C++ ?

(Par exemple, si argv [1] est '--foo = 98', foo_value est 98.)

Mise à jour : J’hésite à regarder dans Boost, puisque je suis à la recherche à faire un très petit changement à un simple outil peu de ligne de commande. (J’ai serait plutôt pas devoir apprendre à relier et utiliser Boost pour un changement mineur.)

206voto

Thomas Points 3172

Vous le feriez comme ceci :

À la recherche d’une lib comme Boost.ProgramOptions qui accomplit cette tâche pour vous, c’est aussi une bonne idée.

169voto

Felix Dombek Points 2130

Juste pour être complet, je vais parler d'une réponse donnée ailleurs:

Si str est votre original de la chaîne, substr est la sous-chaîne que vous souhaitez vérifier, puis

strncmp(str, substr, strlen(substr))

sera de retour 0 si str commence par substr. Les fonctions strncmp et strlen sont dans le C l'en-tête du fichier <string.h>

(posté par Yaseen Rauf à http://bytes.com/topic/c/answers/676092-how-do-we-check-whether-string-starts-substring, balisage ajouté)

93voto

Ferruccio Points 51508

En utilisant des algorithmes de chaîne boost + cast lexicale Poussée :

Comme la plupart des bibliothèques de boost, algorithme de chaîne & cast lexical sont en-tête uniquement, il n’y a rien de mettre un lien dans.

90voto

Hüseyin Yağlı Points 583

Code que j’utilise moi-même :

54voto

matiu Points 2168

Personne n’a utilisé la fonction d’algorithme/incompatibilité STL encore. Si cela retourne la valeur true, le préfixe est un préfixe de « toCheck » :

Exemple complet prog :

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X