C++ Erreur correction exercice ?

exercice string_trim — Suppression des espaces

a marqué ce sujet comme résolu.

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

Il n’y a pas de raison de supprimer des caractères en fin: ce ne sont pas des espaces.

Je présume que en inversant les caractères \n deviens n\ deviens \t et t\ Ce qui empêche leur suppression 

\n et \t représente 1 seul caractère chacun. \\ est un caractère d’échappement qui influence la manière dont le compilateur va interpréter ce qui suit. Et pour écrire \, il faut mettre \\. D’ailleurs, tu remarqueras que même en inversant la chaîne, la chaîne renversée s’affiche toujours avec un saut de ligne.

Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte