Partage
  • Partager sur Facebook
  • Partager sur Twitter

Les accents avec le C++

Table ASCII : http://www.lookuptables.com/

Sujet résolu
    1 décembre 2005 à 8:35:48

    Bonjour !
    Je veux faire une fonction bool is_alpha(char caract) qui me dit si le caractère en paramètre est une lettre ou non.

    J'ai donc fait la condition suivantes en m'aidant de la table ascii :
    if((chaineLue[i] >=  65 && chaineLue[i] <=  90) ||
           (chaineLue[i] >=  97 && chaineLue[i] <= 122)) return true;
    else return false;


    Ce code me permet de regarder si le caractère est un [A-Za-z]. Mais comment rajouter les accents ?

    En effet, sur la table ASCII les accents se trouve entre 128 et 165 sans compter les caractères 152 et 158.

    Mais lorsque je fais un
    cout << (int) Ç << endl;

    Je trouve un nombre négatif et les caractères accentués ne se trouvent pas entre Ç et Ñ comme dans la Table ASCII.

    Pouvez vous m'aider ?
    Le seul moyen que j'ai trouvé et de rajouter la condition : si chaineLue[i] < 0
    Mais ce n'est pas très satisfaisant !

    Merci de votre aide précieuse
    Natim
    • Partager sur Facebook
    • Partager sur Twitter
      1 décembre 2005 à 9:55:44

      tu as essayer quelquechose du type :
      printf("%d",'é');
      • Partager sur Facebook
      • Partager sur Twitter
        1 décembre 2005 à 10:58:52

        http://www.utoronto.ca/webdocs/HTMLdocs/NewHTML/iso_table.html

        Le résultat dépend de ton encodage.
        L'ASCII pur ne dépasse pas 127.
        Pour tester en local si tu es comme sur le lien envoyé :


        #include <stdio.h>

        int main ()
        {
          unsigned int i;
          for(i = 0; i <= 255; i++)
            printf("%d : %c\n",i,i);
          return 0;
        }


        Moi j'utilise pas la console windows mais Msys.
        Pour ceux qui l'utilise et veulent avoir qq chose de potable et pas le vieil encodage merdique par defaut :

        http://www.psydk.org/archives/2004-01-20-63-charset-des-fenetres-console-sous-windows

        Premiere chose à faire : changer la police de la console comme indiqué dans le lien. C'est tout pour la console en elle même.
        Deuxieme chose : dans votre PROGRAMME, rajoutez SetConsoleOutputCP(1252); (include windows.h)
        par exemple pour mon petit programme ça donne :
        #include <stdio.h>
        #include <windows.h>

        int main ()
        {
          unsigned int i;
          char j;
          SetConsoleOutputCP(1252);
          for(i = 0; i <= 255; i++)
            printf("%d : %c\n",i,i);
          return 0;
        }


        Ainsi votre programme s'affichera enfin correctement dans cette super méga naze console windows.
        • Partager sur Facebook
        • Partager sur Twitter
          1 décembre 2005 à 11:43:53

          Oui !
          Mais lorsque je fais :
          if(192 == 'À') cout << 'À';

          Je n'obtiens aucun résultat :(

          Comment faire pour tester si l'accent est dans le bon intervale ?

          J'ai réfléchi et voilà le résultat :
          #include <iostream>

          using namespace std;

          int main ()
          {
            int i;
            for(i = -95; i <0; i++){
              if(i%5==0) cout << endl;
              cout << i << " : " << (char) i << '\t' << '\t';
            }
            cout << endl;

            for(i = 30; i <127; i++){
              if(i%5==0) cout << endl;
              cout << i << " : " << (char) i << '\t' << '\t';
            }
            cout << endl;
          }
          • Partager sur Facebook
          • Partager sur Twitter
            1 décembre 2005 à 12:07:28

            'À' lu comme un char donne -65 ou qq chose comme ça.
            Toi tu le considère comme un truc ASCII donc unsigned char.
            donc :

            if((unsigned char)'À' == 192) printf("ok\n");
            • Partager sur Facebook
            • Partager sur Twitter
              1 décembre 2005 à 12:44:34

              A d'accord !
              Moi, je mettais le unsigned sur le int et pas sur le char :lol:
              • Partager sur Facebook
              • Partager sur Twitter

              Les accents avec le C++

              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
              • Editeur
              • Markdown