Hello,
Ayant un peu de temps libre je me suis mis au C++ Je viens de finir le cours sur les iterateurs je m’attaque a l’exercice (string_trim — Suppression des espaces) N’arrivant pas a trouver la solution je regarde le corrigé je sais c’est mal…
Mais en compilant le code il ne fonctionne pas correctement (il ne supprime pas les derniers éléments)
Voici le code:
#include <algorithm>
#include <cctype>
#include <iostream>
#include <string>
int main()
{
std::string test { "\n\t Hello \n\t!" };
std::cout << "Avant modification : " << test << std::endl;
// On utilise l'itérateur fourni par std::find_if_not, qui pointe sur le premier élément qui n'est pas un espace.
auto premier_non_espace { std::find_if_not(std::begin(test), std::end(test), isspace) };
test.erase(std::begin(test), premier_non_espace);
// On affiche pour tester.
std::cout << "Suppression au début : " << test << std::endl;
// En inversant, tous les espaces de fin se retrouvent au début.
std::reverse(std::begin(test), std::end(test));
std::cout << "renverser: " << test << std::endl;
// On reprend le même algorithme.
premier_non_espace =std::find_if_not(std::begin(test), std::end(test), isspace);
test.erase(std::begin(test), premier_non_espace);
// On revient à l'état initial.
std::reverse(std::begin(test), std::end(test));
// On affiche pour tester.
std::cout << "Suppression à la fin : " << test << std::endl;
return 0;
}
Je présume que en inversant les caracteres \n deviens n\ deviens \t et t\ Ce qui empêche leur suppression ? Et donc le prédicat isspace ne fonctionne pas ou j’ai mal compris ?
+0
-0