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

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 !
Afficher la suite 

2 réponses

Messages postés
215
Date d'inscription
samedi 19 juillet 2008
Statut
Membre
Dernière intervention
22 avril 2015
19
0
Merci
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
0
Merci
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 !
pkpkmépkpk
Messages postés
352
Date d'inscription
samedi 14 mai 2011
Statut
Membre
Dernière intervention
5 avril 2018
50 -
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);
.
Pironico
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 !