Je dois vérifier si un std: string commence par "xyz". Comment le faire sans chercher dans toute la chaîne ou créer des chaînes temporaires avec substr ().
90
J'utiliserais la méthode de comparaison:
std::string s("xyzblahblah");
std::string t("xyz")
if (s.compare(0, t.length(), t) == 0)
{
// ok
}
Une approche qui pourrait être plus conforme à l'esprit de la bibliothèque standard serait de définir votre propre algorithme begin_with.
Cela fournit une interface plus simple au code client et est compatible avec la plupart des conteneurs de bibliothèque standard.
la source
Regardez la bibliothèque String Algo de Boost , qui a un certain nombre de fonctions utiles, telles que starts_with, istart_with (insensible à la casse), etc. seulement les fichiers nécessaires
la source
Il semble que std :: string :: starts_with soit dans C ++ 20, tandis que std :: string :: find peut être utilisé
la source
std::string::compare
car elle permet de vérifier facilement si la chaîne commence par un littéral sans répéter le littéral lui-même pour trouver sa taille. Et merci d'avoir indiqué la solution directe C ++ 20.Je sens que je ne comprends pas entièrement votre question. Il semble que cela devrait être trivial:
Cela ne regarde (au plus) que les trois premiers caractères. La généralisation d'une chaîne inconnue au moment de la compilation vous obligerait à remplacer ce qui précède par une boucle:
la source
t
.