Maison > développement back-end > C++ > Comment supprimer les espaces de début et de fin d'une chaîne en C ?

Comment supprimer les espaces de début et de fin d'une chaîne en C ?

Mary-Kate Olsen
Libérer: 2024-11-19 09:28:03
original
401 Les gens l'ont consulté

How to Trim Leading and Trailing Spaces from a String in C  ?

Suppression des espaces de début et de fin d'une chaîne

La suppression des espaces de début et de fin d'un objet chaîne en C est une tâche courante. La classe string ne dispose pas de méthodes natives pour y parvenir, mais cela peut être réalisé grâce à une combinaison de techniques de manipulation de chaînes.

Pour supprimer les espaces de début et de fin, les fonctions find_first_not_of et find_last_not_of peuvent être utilisées pour identifier le premier et le dernier caractères autres que des espaces dans la chaîne. Une fois ces positions déterminées, la fonction substr peut être utilisée pour extraire la sous-chaîne sans les espaces de début et de fin.

#include <string>

std::string trim(const std::string& str) {
    const auto strBegin = str.find_first_not_of(" ");
    if (strBegin == std::string::npos) {
        return "";
    }
    const auto strEnd = str.find_last_not_of(" ");
    const auto strRange = strEnd - strBegin + 1;
    return str.substr(strBegin, strRange);
}
Copier après la connexion

Extension du formatage pour réduire les espaces supplémentaires

Pour supprimer les espaces supplémentaires entre les mots dans une chaîne, une approche plus globale est nécessaire. Ceci peut être réalisé en utilisant à plusieurs reprises les fonctions find_first_of, find_last_not_of et substr pour remplacer des sous-plages d'espaces par un caractère ou une chaîne d'espace réservé.

std::string reduce(const std::string& str, const std::string& fill = " ") {
    auto result = trim(str);
    auto beginSpace = result.find_first_of(" ");
    while (beginSpace != std::string::npos) {
        const auto endSpace = result.find_first_not_of(" ", beginSpace);
        const auto range = endSpace - beginSpace;
        result.replace(beginSpace, range, fill);
        const auto newStart = beginSpace + fill.length();
        beginSpace = result.find_first_of(" ", newStart);
    }
    return result;
}
Copier après la connexion

Exemple d'utilisation

L'extrait de code suivant montre comment utiliser ces fonctions :

const std::string foo = "    too much\t   \tspace\t\t\t  ";
const std::string bar = "one\ntwo";

std::cout << "[" << trim(foo) << "]" << std::endl;
std::cout << "[" << reduce(foo) << "]" << std::endl;
std::cout << "[" << reduce(foo, "-") << "]" << std::endl;

std::cout << "[" << trim(bar) << "]" << std::endl;
Copier après la connexion

Ce code produira le résultat suivant :

[too much               space]  
[too much space]  
[too-much-space]  
[one  
two]  
Copier après la connexion

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