Partage
  • Partager sur Facebook
  • Partager sur Twitter

Test sur un code ASCII

Dans un tableau biensur ^^

Sujet résolu
13 novembre 2008 à 21:21:41

Bonsoir, bonsoir ^^

Voilà mon souci, je dois tester des caracteres et remplacer tous les caracteres non alphabetique de mon tableau par des espaces, chose que j'ai réussi mais le truc se corse lorsque je dois garder les caracteres accentués.

Voila un bout de code que j'ai essayé de pondre mais sans succes, je pense que le probleme vient de mon test sur les codes ASCII des caracteres accentués, ici j'utilise leurs codes décimaux.

for ( int cptcase=0; cptcase<strlen(crypt); cptcase++ )
    {
        if (isupper(crypt[cptcase]))
        {
            crypt[cptcase]=tolower(crypt[cptcase]); // Si le caractere dans la case tester est une majuscule,
        }                                           //           le convertir en minuscule.
        if (!(isalpha(crypt[cptcase]))|| ((crypt[cptcase]) >= '129') && ((crypt[cptcase]) <= '144') || ((crypt[cptcase]) >= '147') && ((crypt[cptcase]) <= '154') || ((crypt[cptcase]) >= '160') && (!(crypt[cptcase]) <= '165'))
        {
            crypt[cptcase]=' ';
        }

        cout << crypt[cptcase]; // <------- Affichage de ce que contient le tableau.
    }


Voilà, si quelqu'un peut me donner un indice voir même la raison du probleme, je suis preneur :p
Merci d'avance ;)
  • Partager sur Facebook
  • Partager sur Twitter
14 novembre 2008 à 0:53:42

Les caractères accentués ne sont pas "standards"; ils dépendent de ton OS (entre autres) donc il n'y a pas de comportement C++ standard dans ce cas.

Il faut te débrouiller sans passer par la "valeur" ASCII des lettres.
  • Partager sur Facebook
  • Partager sur Twitter
Co-auteur du cours de C++. ||| Posez vos questions sur le forum ||| Me contacter.
14 novembre 2008 à 13:13:53

Re :D

Eh bien pour une fois j'ai réussi a trouver la réponse tout seul comme un chef.
J'ai réussi a faire ce que je voulais avec mes codes ASCII.
J'ai préféré suivre mon idée initiale et je ne regrette pas :p

En tous cas merci d'avoir, encore une fois, pris le temps de regarder mon probleme.

Pour ceux que ça interesserait voici le code ( qui marche !! ^^ )

for ( int cptcase=0; cptcase<strlen(crypt); cptcase++ )
    {
        if (crypt[cptcase] >= 'A' && crypt[cptcase] <= 'Z' )
        {
            crypt[cptcase]=tolower(crypt[cptcase]); // Si le caractere dans la case testée est une majuscule,
        }                                           //           le convertir en minuscule.
        else if ((crypt[cptcase] < 'a' || crypt[cptcase] > 'z') && (crypt[cptcase] <= (char(154)) || crypt[cptcase] >= char(160)) && (crypt[cptcase] > char(165)))
        {
            crypt[cptcase]=' ';
        }

        cout << crypt[cptcase]; // <------- Affichage de ce que contient le tableau.
    }
  • Partager sur Facebook
  • Partager sur Twitter