Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
3396 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  erreur de segmentation sur string

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

erreur de segmentation sur string

n°1247990
chemouz
Posté le 17-11-2005 à 22:28:57  profilanswer
 

Bonjour, :hello:
 
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 ...

mood
Publicité
Posté le 17-11-2005 à 22:28:57  profilanswer
 

n°1248021
morph
Posté le 17-11-2005 à 23:21:21  profilanswer
 

une autre solution, tu es toujours obligé d'initialiser convert

Code :
  1. #include <iostream>
  2. #include <string>
  3. #include <algorithm>
  4. using std::cout;
  5. using std::endl;
  6. using std::string;
  7. using std::remove_copy_if;
  8. bool
  9. voyelle (const char& _char)
  10. {
  11.   return _char=='a'
  12.        || _char=='e'
  13.        || _char=='i'
  14.        || _char=='o'
  15.        || _char=='u'
  16.        || _char=='y';
  17. }
  18. int main ()
  19. {
  20.   string chaine="Jedoisretirerlesvoyellesdecettechaine";
  21.   string  convert(chaine);
  22.   convert.erase(remove_copy_if(chaine.begin() + 1, chaine.end(), convert.begin() + 1, voyelle)
  23.                       , convert.end());
  24.   cout << "Chaine de base : " << chaine
  25.          << "\nSans voyelles : " << convert << endl;
  26.   return 0;
  27. }

n°1248101
chemouz
Posté le 18-11-2005 à 08:55:59  profilanswer
 

Merci de ton aide mais je dois m'en tenir aux méthodes vues en cours je pense ...
Donc sans  #include <algorithm> ou convert(chaine);


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  erreur de segmentation sur string

 

Sujets relatifs
segmentation fault[Hibernate] Erreur de mapping
erreur à la compilationType de donnée ERREUR énorme!
Erreur quand il n'y pas d'ID en GETErreur "fonction" is multiply-defined...
Erreur ggc que je sais pas resoudreExtraire des int et des float d'un string [résolu]
erreur sqlErreur de test avec plus de 2 : $_FILES
Plus de sujets relatifs à : erreur de segmentation sur string


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR