Programme pour supprimer les espaces d'une chaine de caractéres

Résolu
Pironico Messages postés 6 Date d'inscription   Statut Membre Dernière intervention   -  
Pironico Messages postés 6 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour;
J'ai écris un programme pour supprimer les espaces d'une chaine de caractères, mais celui-ci ne fonctionne pas.
En gros c'était ça (a et b sont des string) :
 for (i=0; i <= a.size(); i++)
{
if (a.substr(i,1) != " ") //je penses que le problème vient de cette ligne
{
b += a.substr(i,1);
}
}
Auriez vous une alternative s'il-vous-plait ? sans me renvoyer vers d'autres forums ou sujets, car j'ai déjà cherché mais je n'ai pas compris les solutions proposées.

Merci d'avance !

2 réponses

  1. skymax406 Messages postés 242 Statut Membre 24
     
    Hello !
    string removeSpaces(string input)
    {
      input.erase(std::remove(input.begin(),input.end(),' '),input.end());
      return input;
    }


    Peux tu essayer cette fonction ?
    0
  2. Pironico Messages postés 6 Date d'inscription   Statut Membre Dernière intervention  
     
    Déjà, merci de cette réponse rapide;
    J'ai essayé cette fonction, mais tout ne fonctionne pas comme je voudrais.
    Voici mon code :
    #include <iostream>
    #include<string>
    #include<algorithm> //j'ai eu du mal à le trouver celui là

    using namespace std;
    string removeSpaces(string input);

    int main()
    {
    string phrase;
    cin >> phrase;
    phrase = removeSpaces(phrase);
    cout << phrase;

    return 0;
    }

    string removeSpaces(string input)
    {
    input.erase(std::remove(input.begin(),input.end(),' '),input.end());
    return input;
    }
    Si j'entre la phrase : Voici une phrase
    Tout ce qui ressort est : phrase
    (néanmoins cette fonction supprime tous les espaces aux débuts, avant les premiers caractères)

    Merci !
    0
    1. Utilisateur anonyme
       
      Salut,

      C'est plutôt "Voici" qui devrait sortir.
      Le problème ne vient pas de removeSpaces, mais de la ligne
      cin >> phrase;
      : ça s'arrête au premier espace. Pour t'en convaincre, fais un
      cout << phrase;
      juste après cette ligne. Remplace donc
      cin >> phrase;
      par
      getline(cin,phrase);
      .
      0
    2. Pironico Messages postés 6 Date d'inscription   Statut Membre Dernière intervention  
       
      Salut;
      En effet, merci bien pour cette réponse !
      0