Bonjour,
J'ai un petit problème avec ce petit programme qui supprime les voyelles d'une chaine et conservant la première lettre qu'elle qu'elle soit.
Si je n'initialise pas la string convert avec suffisament d'espaces pour contenir le résultat j'ai un erreur de segmentation (pas à la compilation mais à l'utilisation).
Avez vous une solution pour ne pas avoir à initialiser convert ?
Merci.
N.B je doit utiliser une boucle for (unsigned i=1; i<chaine.size();++i)
Citation :
#include <iostream>
#include <string>
using std::cout;
using std::endl;
using std::string;
int main ()
{
string chaine="Jedoisretirerlesvoyellesdecettechaine";
string convert=" ";
int j=1;
convert[0]=chaine[0];
for (unsigned i=1; i<chaine.size();++i)
{
if (chaine[i]!='a' && chaine[i]!='e' && chaine[i]!='i' && chaine[i]!='o' && chaine[i]!='u' && chaine[i]!='y' )
{
convert[j]=chaine[i];
j++;
}
}
cout<<"Chaine de base : "<<chaine<<"\nSans voyelles : "<<convert<<endl;
return 0;
}
|
Autre question
Imaginons que l'on a une fonction dans un fichier séparé qui prend un argument de type chaîne de caractères, a qui on peut passer, indifféremment, un litéral chaîne (ex. "hello" ), un argument de la ligne de commande (type : char const *) ou une variable de type std::string.
Quels argumments mettre dans le .h et dans le cpp?
Merci encore ...