Programme pour supprimer les espaces d'une chaine de caractéres [Résolu/Fermé]

Signaler
Messages postés
6
Date d'inscription
mardi 25 juin 2013
Statut
Membre
Dernière intervention
30 avril 2015
-
Messages postés
6
Date d'inscription
mardi 25 juin 2013
Statut
Membre
Dernière intervention
30 avril 2015
-
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

Messages postés
215
Date d'inscription
samedi 19 juillet 2008
Statut
Membre
Dernière intervention
22 avril 2015
23
Hello !
string removeSpaces(string input)
{
  input.erase(std::remove(input.begin(),input.end(),' '),input.end());
  return input;
}


Peux tu essayer cette fonction ?
Messages postés
6
Date d'inscription
mardi 25 juin 2013
Statut
Membre
Dernière intervention
30 avril 2015

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 !
Messages postés
341
Date d'inscription
samedi 14 mai 2011
Statut
Membre
Dernière intervention
14 janvier 2018
51
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);
.
Messages postés
6
Date d'inscription
mardi 25 juin 2013
Statut
Membre
Dernière intervention
30 avril 2015

Salut;
En effet, merci bien pour cette réponse !