Maison > développement back-end > C++ > le corps du texte

Comment diviser des chaînes avec plusieurs délimiteurs ?

Linda Hamilton
Libérer: 2024-11-11 04:03:03
original
419 Les gens l'ont consulté

How to Split Strings with Multiple Delimiters?

Diviser des chaînes avec plusieurs délimiteurs [Dupliquer]

Dans le traitement de texte, il est souvent nécessaire de diviser une chaîne en mots ou jetons individuels. Alors que les techniques standard de fractionnement de chaînes excellent dans la gestion des délimiteurs uniques, la tâche devient plus difficile avec plusieurs délimiteurs.

Problème :

Étant donné une chaîne et un ensemble de délimiteurs, comment pouvons-nous diviser la chaîne en mots tout en considérant tous les éléments spécifiés délimiteurs ?

Solution :

Pour diviser efficacement une chaîne à l'aide de plusieurs délimiteurs, nous exploitons une combinaison d'opérations de flux de chaîne et de sous-chaîne. Voici une version modifiée du code fourni :

std::stringstream stringStream(inputString);
std::string line;
while(std::getline(stringStream, line)) {
    std::size_t prev = 0, pos;
    auto delimiters = " ';";  // Customize delimiter string here
    while ((pos = line.find_first_of(delimiters, prev)) != std::string::npos) {
        if (pos > prev)
            wordVector.push_back(line.substr(prev, pos-prev));
        prev = pos+1;
    }
    if (prev < line.length())
        wordVector.push_back(line.substr(prev, std::string::npos));
}
Copier après la connexion

Explication :

  • Nous parcourons chaque ligne de la chaîne d'entrée en utilisant std::getline.
  • Pour chaque ligne, nous utilisons std::find_first_of pour localiser la position du premier délimiteur dans le line.
  • Si un délimiteur est trouvé, nous ajoutons la sous-chaîne entre le délimiteur précédent et le délimiteur actuel au wordVector.
  • Nous mettons ensuite à jour prev pour pointer vers le caractère après le délimiteur.
  • Après avoir traité toute la ligne, nous ajoutons la sous-chaîne restante au wordVector si elle n'est pas vide.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal