Maison >développement back-end >C++ >Comment le rfind de std::string peut-il être utilisé pour rechercher un préfixe et convertir une sous-chaîne en entier ?

Comment le rfind de std::string peut-il être utilisé pour rechercher un préfixe et convertir une sous-chaîne en entier ?

Linda Hamilton
Linda Hamiltonoriginal
2024-11-01 19:41:30652parcourir

How can std::string's rfind be used to check for a prefix and convert a substring to an integer?

Utilisation des surcharges rfind de std::string pour vérifier le préfixe et convertir la sous-chaîne en Int

Pour déterminer si une chaîne C std::string commence avec une chaîne spécifique et convertir une sous-chaîne en entier, vous pouvez tirer parti du rfind surchargé function.

Vérification du préfixe de chaîne

Utilisez la surcharge rfind qui accepte un paramètre de position de recherche (pos). La définition de ce paramètre sur zéro restreint la recherche au début de la chaîne :

<code class="cpp">std::string s = "tititoto";
if (s.rfind("titi", 0) == 0) {
  // The string s starts with the "titi" prefix.
}</code>

Conversion de la sous-chaîne en Int

Pour extraire une sous-chaîne après un préfixe connu et la convertir en un entier, vous pouvez utiliser une combinaison de rfind et substr :

<code class="cpp">std::string arg = "--foo=98";
size_t pos = arg.rfind("--foo=");
if (pos != std::string::npos) {
  std::string fooValue = arg.substr(pos + len("--foo="));
  int value = std::stoi(fooValue);
}</code>

Dans cet exemple, si arg est "--foo=98", la valeur variable se verra attribuer la valeur entière 98.

Avantage STL

Cette approche évite le besoin de bibliothèques externes comme Boost. Il utilise les manipulations de chaînes standard fournies par la STL, qui sont simples à mettre en œuvre et efficaces.

Simplification C 20

En C 20 et versions ultérieures, le std :: Les classes string et std::string_view introduisent la méthode startups_with, ce qui rend la vérification d'un préfixe encore plus simple :

<code class="cpp">std::string s = "tititoto";
if (s.starts_with("titi")) {
  // The string s starts with the "titi" prefix.
}</code>

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn