C++ fonction qui repere les alphanumériques et les accents

C++ fonction qui repere les alphanumériques et les accents - C++ - Programmation

Marsh Posté le 15-11-2007 à 14:03:27    

Bonjour, est ce qu'il y aurait une fonction en C++ du type isalnum() qui prend en compte aussi les accents (font ch*** ces anglais^^). Ou autrement les alphabetiques et accents, je me debrouillerai pour rajouter le cas numérique derriere. Merci

Reply

Marsh Posté le 15-11-2007 à 14:03:27   

Reply

Marsh Posté le 15-11-2007 à 14:35:45    

isalnum pour peut que tu initalises les locales.

Reply

Marsh Posté le 15-11-2007 à 14:52:07    

c'est a dire?

Reply

Marsh Posté le 16-11-2007 à 23:27:51    

Peut être tu pourrais utiliser le code ascii des caracteres...

Reply

Marsh Posté le 17-11-2007 à 00:58:45    

Toinou87 a écrit :

c'est a dire?


Çà :

Code :
  1. setlocale( LC_ALL, "French" );
  2. if (isalnum((unsigned char) 'é'))
  3.  puts("oui" );
  4. else
  5.  puts("non" );

Reply

Marsh Posté le 17-11-2007 à 01:07:08    

Tu devrais plus utiliser le code ascii... :D

Reply

Marsh Posté le 17-11-2007 à 08:18:02    

Et pourquoi ?

Reply

Marsh Posté le 17-11-2007 à 09:17:34    

Splinter_7 a écrit :

Tu devrais plus utiliser le code ascii... :D


 
http://www.miraclesalad.com/shared/Stupidity.jpg
 
Le code ascii c'est la PIRE des solutions. On a pas inventer les locale pour se toucher la bite :o
Y a enormement de problème et d'ambiguités sur les systèmes, le scharset etc ...

Reply

Marsh Posté le 17-11-2007 à 10:50:08    

Avec le fonction isalnum tu vas être obligé de tester chacun de tes caractères  
 
if(isalnum((unsigned char) 'é'))
 
etc...
 
je me trompe peut être....

Reply

Marsh Posté le 17-11-2007 à 11:45:27    

Splinter_7 a écrit :

Avec le fonction isalnum tu vas être obligé de tester chacun de tes caractères  
 
if(isalnum((unsigned char) 'é'))
 
etc...


 
Et tu t'es pas dit qu'il suffit de correctement tester le contenu de sa chaîne avec isalnum() et la bonne locale sans se faire chier à écrire plus de code (c'est-à-dire, en gros, 1 ligne de plus pour mettre la locale par rapport à isalnum() tout seul), et qu'en plus cette solution permet de gérer facilement plusieurs langues ?
Alors que ta super solution 1. n'est pas portable et 2. demande à maintenir un tableau annexe avec tous les caractères accentués qui sont censés être reconnus comme alphanumérique... et donc de faire une boucle de tests en plus. [:mlc]
Sans compter que le jour où tu dois ajouter l'allemand, tu recommences depuis le début, alors qu'avec les locales, t'as juste un test de plus à  écrire pour mettre la bonne. [:kiki]

Reply

Marsh Posté le 17-11-2007 à 11:45:27   

Reply

Marsh Posté le 17-11-2007 à 12:05:04    

comment tu utilises ces locales? je suis pas familier avec ca et oui j'aimerai pas avoir a rentrer tous les caractères accentués

Reply

Marsh Posté le 17-11-2007 à 12:14:17    

Trap D t'a donné l'exemple tout prêt. [:romf]
 
Sous *nix, tu peux zieuter dans /usr/lib/locale les différentes localisations installée, trouve un fr* qui ait un sous-répertoire LC_CTYPE et ça roule.
Moi j'ai de la chance, sur mon système le LC_CTYPE n'est défini que pour fr_CA.ISO8859-1 [:god]

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed