IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C++ Discussion :

desaccentuer les caractères


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Mai 2008
    Messages
    160
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2008
    Messages : 160
    Par défaut desaccentuer les caractères
    bonjour a tous
    je dois faire un exercice pour l'école
    et j'ai un souci
    je crée un string avec des accent et je devrais la transformer en lettre sans accent
    j'ai fais un bout de code mais le code asscii retournée ne correspond pas aucode assci reel donc il ne passe pas dans mon switch pour faire la modification du caracrère
    je vous montre mon code enfin une partie car avant le switch j'essaye de voir d'ou viens l'erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
       string supprAccent(string chaine)
     {
    	int i;
    	int entier ;
    	int nbre = chaine.length();
    	for(i=0;i<=nbre-1;i++)
    	{
    		entier = static_cast <int>(chaine [i]);
    		cout << chaine[i] << " corespondance ASCII " << entier  << endl;
    et dans le main je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    	string chaine;
     
    	cout << "Veuillez inserer ne phrase avec des accent ";
    	cin >> chaine ;
     
    	chaine = supprAccent(chaine);
    et quand je visualise la reponse si je met pas d'accent le code asscii correspond mais aussitôt que je met des accent il me donne des reponse bizarre
    exemple:
    a correpond a 97
    b correspond 98
    tous ok mais
    é corespond a -126
    à correspond a -123

    si vous pourriez me dire d'ouviens l'erreur je vous en remercie

    Di Blasio Michael

  2. #2
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Par défaut
    Citation Envoyé par diblasio Voir le message
    é corespond a -126
    à correspond a -123
    Cela sent le signed char.

    En général, les accents et caractères spéciaux ont des codes supérieurs à 127.

    Un nombre plus grand que 128 mis dans un signed char sera un interprété comme un nombre négatif. Essaye de lire dans des unsigned char.
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  3. #3
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Mai 2008
    Messages
    160
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2008
    Messages : 160
    Par défaut
    ok je vais essayer cela
    car s'est vrai pour les caractère accentuer en que l'on utlisise chez nous en eupope il vont de 128 a 154
    donc meme si je les mais on non signer il me donne pas le bon nombre decimal
    car si je prend le é il devrais me retouner le code asscii decimal 130
    mais a moi il me retourne -126
    je vais voir si je le mais en unsigned comme tu dis si il me retourne 126 ou le 130 qui correspond au vrai code ascii
    merci pour ta repnse aussi rapide

  4. #4
    Membre très actif
    Profil pro
    professeur des universités à la retraite
    Inscrit en
    Août 2008
    Messages
    364
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : professeur des universités à la retraite

    Informations forums :
    Inscription : Août 2008
    Messages : 364
    Par défaut
    La question n'est-elle pas plutôt de savoir comment sont représentés et comment peuvent être récupérés les caractères accentués dans une string ?

    Comparer par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    int main()
    {
      string essai;
      essai = "de";
      cout << essai[1] << endl;
    }
    qui donne :
    e
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    int main()
    {
      string essai;
      essai = "dé";
      cout << essai[1] << endl;
    }
    qui... ne donne rien...

  5. #5
    Membre Expert
    Avatar de Goten
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 580
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 580
    Par défaut
    Là le problème est du à la sortie .

  6. #6
    Membre très actif
    Profil pro
    professeur des universités à la retraite
    Inscrit en
    Août 2008
    Messages
    364
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : professeur des universités à la retraite

    Informations forums :
    Inscription : Août 2008
    Messages : 364
    Par défaut
    Suivant la suggestion de ram-0000, ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    int main()
    {
      unsigned char c;
      string essai = "dé";
      c = static_cast<unsigned char>(essai[1]);
      cout << c << endl;
      c = essai[1];
      cout	 << c << endl;
    }
    Ne donne rien non plus.
    Comment fait-on au bout du compte pour obtenir le code ASCII d'un caractère accentué ou autre caractère au-dessus de 127 à partir d'une string d'une part et comment fait-on pour l'obtenir isolément en sortie d'autre part ?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [C#][ADO] Enlever les caractère spéciaux
    Par Oberown dans le forum Windows Forms
    Réponses: 3
    Dernier message: 10/01/2005, 18h38
  2. [Jsp] Supprimer les caractère spéciaux d'une chaine
    Par PeteMitchell dans le forum Servlets/JSP
    Réponses: 4
    Dernier message: 13/05/2004, 11h11
  3. Réponses: 7
    Dernier message: 12/05/2003, 22h50
  4. Traiter les caractères spéciaux
    Par ricola dans le forum Langage
    Réponses: 2
    Dernier message: 20/02/2003, 09h23
  5. [PostgreSQL] Les caractères accentués ?
    Par yacomor dans le forum Requêtes
    Réponses: 2
    Dernier message: 18/02/2003, 16h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo