Maison >développement back-end >C++ >Comment supprimer les espaces de début et de fin et réduire plusieurs espaces en espaces simples dans une chaîne C ?
Cette tâche, communément appelée découpage de chaîne, peut être accomplie à l'aide de la classe de chaîne de C. Pour gérer les espaces supplémentaires potentiels entre les mots, une opération distincte appelée réduction de chaîne est utilisée.
Pour supprimer les espaces de début et de fin, la fonction trim() peut être définie en utilisant les méthodes find_first_not_of et find_last_not_of :
std::string trim(const std::string& str, const std::string& whitespace = " \t") { const auto strBegin = str.find_first_not_of(whitespace); if (strBegin == std::string::npos) return ""; // no content const auto strEnd = str.find_last_not_of(whitespace); const auto strRange = strEnd - strBegin + 1; return str.substr(strBegin, strRange); }
Pour supprimer les espaces supplémentaires entre les mots, la fonction réduire() effectue les opérations suivantes :
std::string reduce(const std::string& str, const std::string& fill = " ", const std::string& whitespace = " \t") { // trim first auto result = trim(str, whitespace); // replace sub ranges auto beginSpace = result.find_first_of(whitespace); while (beginSpace != std::string::npos) { const auto endSpace = result.find_first_not_of(whitespace, beginSpace); const auto range = endSpace - beginSpace; result.replace(beginSpace, range, fill); const auto newStart = beginSpace + fill.length(); beginSpace = result.find_first_of(whitespace, newStart); } return result; }
Le code suivant démontre le utilisation des fonctions trim() et réduire() :
int main(void) { 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; }
[too much space] [too much space] [too-much-space] [one two]
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!