0Pricing
C++ Academy · Leçon

Algorithmes sur les chaînes

Rechercher et découper efficacement

Algorithmes sur les chaînes est une leçon C++ Academy gratuite sur CoddyKit. Ceci est la leçon 4 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage C++ Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours C++ Academy comprend 4 leçons au total.

Rechercher avec find

find renvoie l'indice d'une sous-chaîne ou npos si elle est absente, directement sur une vue et sans copie.

#include <iostream>
#include <string_view>
int main() {
    std::string_view sv = "key=value";
    auto pos = sv.find('=');
    std::cout << pos << "\n"; // 3
}

Vérifier npos

Comparez toujours le résultat d'une recherche à std::string_view::npos avant de l'utiliser comme indice.

#include <iostream>
#include <string_view>
int main() {
    std::string_view sv = "abc";
    if (sv.find('z') == std::string_view::npos)
        std::cout << "not found\n";
}

Vérifier le préfixe et le suffixe

starts_with et ends_with (C++20) rendent l'intention évidente et évitent les comparaisons manuelles de sous-chaînes.

#include <iostream>
#include <string_view>
int main() {
    std::string_view sv = "report.pdf";
    std::cout << sv.starts_with("report") << "\n";
    std::cout << sv.ends_with(".pdf") << "\n";
}

Extraire un champ

Combinez find et substr pour séparer une paire clé-valeur sans allouer de nouvelles chaînes.

#include <iostream>
#include <string_view>
int main() {
    std::string_view sv = "name=Ada";
    auto eq = sv.find('=');
    std::cout << sv.substr(0, eq) << " : " << sv.substr(eq + 1) << "\n";
}

Séparer avec un délimiteur

Vous pouvez parcourir les jetons en recherchant à plusieurs reprises le délimiteur et en prenant des sous-vues ; chaque jeton est simplement une vue.

#include <iostream>
#include <string_view>
int main() {
    std::string_view sv = "a,b,c";
    size_t start = 0, pos;
    while ((pos = sv.find(',', start)) != std::string_view::npos) {
        std::cout << sv.substr(start, pos - start) << "\n";
        start = pos + 1;
    }
    std::cout << sv.substr(start) << "\n";
}

Rechercher depuis la fin

rfind effectue la recherche en remontant, ce qui est pratique pour obtenir une extension de fichier ou le dernier séparateur.

#include <iostream>
#include <string_view>
int main() {
    std::string_view path = "/usr/local/bin";
    auto slash = path.rfind('/');
    std::cout << path.substr(slash + 1) << "\n"; // bin
}

Supprimer les espaces superflus

Utilisez find_first_not_of et find_last_not_of avec remove_prefix/remove_suffix pour supprimer les espaces superflus, le tout sans copie.

#include <iostream>
#include <string_view>
int main() {
    std::string_view sv = "  hi  ";
    sv.remove_prefix(sv.find_first_not_of(" "));
    sv.remove_suffix(sv.size() - 1 - sv.find_last_not_of(" "));
    std::cout << "[" << sv << "]\n"; // [hi]
}

Comparer des vues

Les vues prennent en charge == et compare pour les comparaisons lexicographiques, en comparant les caractères et non les pointeurs.

#include <iostream>
#include <string_view>
int main() {
    std::string_view a = "apple", b = "apple";
    std::cout << (a == b) << "\n"; // 1
}

Compter les occurrences

Une boucle utilisant find et avançant après chaque occurrence permet de compter le nombre d'apparitions d'un caractère ou d'une sous-chaîne.

#include <iostream>
#include <string_view>
int main() {
    std::string_view sv = "mississippi";
    int count = 0;
    for (size_t p = sv.find('s'); p != std::string_view::npos; p = sv.find('s', p + 1)) ++count;
    std::cout << count << "\n"; // 4
}

Les algorithmes restent sans allocation

Toutes ces opérations utilisent le même tampon sous-jacent. Les jetons et les résultats élagués sont des sous-vues ; aucune allocation sur le tas n'a lieu avant la construction d'un std::string.

Attention aux durées de vie

Les sous-vues produites par ces algorithmes partagent la durée de vie du tampon d'origine. Ne les laissez pas exister plus longtemps que la chaîne source.

Vérification rapide

Vérifiez votre compréhension des algorithmes de string_view.

Récapitulatif

Vous avez appris les algorithmes de chaînes sur les vues :

  • find/rfind renvoient des positions ou npos.
  • starts_with/ends_with vérifient les préfixes et les suffixes.
  • Le découpage, la suppression des espaces superflus et la création de jetons produisent des sous-vues sans allocation.
  • Les sous-vues partagent la durée de vie de la source ; faites attention aux vues pendantes.

Questions Fréquemment Posées

La leçon « Algorithmes sur les chaînes » est-elle gratuite ?

Oui — le texte complet de « Algorithmes sur les chaînes » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours C++ Academy, passe à CoddyKit PRO. Le cours C++ Academy comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « Algorithmes sur les chaînes » ?

Rechercher et découper efficacement Tu pratiques C++ Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer C++ Academy ?

Aucune expérience préalable n'est requise. C++ Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 4 sur 4.

Combien de temps prend la leçon « Algorithmes sur les chaînes » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon C++ Academy ?

Oui. Chaque leçon C++ Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. Pourquoi utiliser string_view
  2. Créer des vues
  3. Pièges et durées de vie
  4. Algorithmes sur les chaînes
← Retour à C++ Academy