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

  FORUM HardWare.fr
  Programmation
  C++

  Distinguer un caractère "lettre" d'un caractère quelconque

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Distinguer un caractère "lettre" d'un caractère quelconque

n°356520
Lancelot**
All I do is kiteboarding
Posté le 09-04-2003 à 12:42:10  profilanswer
 

Salut à tous,
 
j'aurais aimé utilisé la fonction toute faite "IsCharAlpha" mais comme y'a un bug dans le header winuser.h (j'utilise Visual C++), je voudrais savoir s'il existe une fct similaire permettant de savoir si un caractère est une lettre ou non.
 
Merci

mood
Publicité
Posté le 09-04-2003 à 12:42:10  profilanswer
 

n°356530
theshockwa​ve
I work at a firm named Koslow
Posté le 09-04-2003 à 13:07:22  profilanswer
 

Code :
  1. // Une petite fonction
  2. __inline char isCharAlpha(const char c) {
  3.   return ((c>='a')&&(c<='z'))||((c>='A')&&(c<='Z'));
  4. }
  5. // Ou la macro suivante :
  6. #define ISCHARALPHA(c) (((c>='a')&&(c<='z'))||((c>='A')&&(c<='Z')))
  7. // Devraient te suffire ! ;)


 
 
Attention avec l'utilisation des macros, hein ?
 
(pas de ISCHARALPHA(getch) par exemple ...)


Message édité par theshockwave le 09-04-2003 à 13:20:52
n°356541
Lancelot**
All I do is kiteboarding
Posté le 09-04-2003 à 13:14:47  profilanswer
 

theShOcKwAvE a écrit :

[cpp]
// Une petite fonction
__inline char isCharAlpha(const char c) {
  return ((c>='a';)&&(c<='z';))||((c>='A';)&&(c<='Z';));
}
// Ou la macro suivante :
#define ISCHARALPHA(c) (((c>='a';)&&(c<='z';))||((c>='A';)&&(c<='Z';)))
// Devraient te suffire ! ;)
[cpp]
 
 
Attention avec l'utilisation des macros, hein ?
 
(pas de ISCHARALPHA(getch) par exemple ...)
 


 
ne connaissant pas l'utilisation des macros je vais plutot utiliser la fonction  :D  
 
Par contre tu as oublié de tenir compte des lettres accentuées  ;)  
Merci quand même  :jap:

n°356564
theshockwa​ve
I work at a firm named Koslow
Posté le 09-04-2003 à 13:30:51  profilanswer
 

Effectivement, mais ce ne sont que des cas particuliers à rajouter dans la liste.
 
En revanche, je ne suis pas sur que les lettres accentuées soient contigües dans toutes les tables ASCII ...
 
mais bon ... Bon courage ! ;)

n°356610
htep
Posté le 09-04-2003 à 14:01:26  profilanswer
 

Essaye isalpha(char)

n°356614
Tetragramm​aton IHVH
dieu unique =&gt; pensée unique
Posté le 09-04-2003 à 14:04:39  profilanswer
 

Lancelot** a écrit :

Salut à tous,
 
j'aurais aimé utilisé la fonction toute faite "IsCharAlpha" mais comme y'a un bug dans le header winuser.h (j'utilise Visual C++), je voudrais savoir s'il existe une fct similaire permettant de savoir si un caractère est une lettre ou non.
 
Merci


 
 :lol:  :lol:  :lol:


---------------
"Dieu a exploité tous nos complexes d'infériorité, en commençant par notre incapacité de croire à notre propre divinité." - Emil Michel Cioran
n°356619
Lancelot**
All I do is kiteboarding
Posté le 09-04-2003 à 14:07:31  profilanswer
 

J'ai trouvé!
 
iswalpha() dans ctype.h
 
 :sol:

n°356620
Lancelot**
All I do is kiteboarding
Posté le 09-04-2003 à 14:08:07  profilanswer
 


 
Qu'est-ce qu'il y a de marrant?  :heink:

n°356625
Tetragramm​aton IHVH
dieu unique =&gt; pensée unique
Posté le 09-04-2003 à 14:11:37  profilanswer
 

Lancelot** a écrit :


 
Qu'est-ce qu'il y a de marrant?  :heink:  


 
C'est pas la peine de raconter porte nawak si tu veux qu'on t'aide... :sarcastic:


---------------
"Dieu a exploité tous nos complexes d'infériorité, en commençant par notre incapacité de croire à notre propre divinité." - Emil Michel Cioran
n°357172
sr16
@*#%$*%§!!
Posté le 09-04-2003 à 21:39:47  profilanswer
 

Je propose une autre solution beaucoup plus rapide a l'execution si on tient compte des caractères accentués.  
Sous forme d'un tableau statique de bools contenant 256 valeurs. Une pour chaque caractère.
 
Si un caractère appartient a l'ensemble, il suffit de mettre "true" et sinon "false".
 
Apprès, on teste une caractère avec une fonction dans ce genre :
 

Code :
  1. bool IsCaractere( unsigned char c )
  2. {
  3.   return( Table[c] );
  4. }


 
voila, et c'est très rapide.
 
J'ai utilisé ce type de code pour réaliser un interpreteur Basic.
 


---------------
TOPIC PERMANENT Matrox Parhelia
mood
Publicité
Posté le 09-04-2003 à 21:39:47  profilanswer
 

n°357207
Taz
bisounours-codeur
Posté le 09-04-2003 à 22:40:16  profilanswer
 

Lancelot** a écrit :

J'ai trouvé!
 
iswalpha() dans ctype.h
 
 :sol:  

c pour les wchar

n°357218
theshockwa​ve
I work at a firm named Koslow
Posté le 09-04-2003 à 22:56:42  profilanswer
 

Sr16 a écrit :

Je propose une autre solution beaucoup plus rapide a l'execution si on tient compte des caractères accentués.  
Sous forme d'un tableau statique de bools contenant 256 valeurs. Une pour chaque caractère.
 
Si un caractère appartient a l'ensemble, il suffit de mettre "true" et sinon "false".
 
Apprès, on teste une caractère avec une fonction dans ce genre :
 

Code :
  1. bool IsCaractere( unsigned char c )
  2. {
  3.   return( Table[c] );
  4. }


 
voila, et c'est très rapide.
 
J'ai utilisé ce type de code pour réaliser un interpreteur Basic.
 
 


 
C'est vrai que ca a l'air pas trop mal, comme solution ! ;)
Ca gaspilles un peu de mem, mais c'est vrai que c'est assez négligeable ! ;)

n°357334
sr16
@*#%$*%§!!
Posté le 10-04-2003 à 03:39:52  profilanswer
 

theShOcKwAvE a écrit :


 
C'est vrai que ca a l'air pas trop mal, comme solution ! ;)
Ca gaspilles un peu de mem, mais c'est vrai que c'est assez négligeable ! ;)
 


 
256 octets, c'est pas beaucoup a côté de 1 giga de ram.
 
Et puis, ça peut resservire 10.000 fois dans le même programme.
 
Sans compter que si tu l'utilise plusieurs fois, le code généré etant beaucoup plus court que celui utilisé pour faire de multiples comparaisons, tu arrivera sûrement a gagner aussi de ce côté la.


---------------
TOPIC PERMANENT Matrox Parhelia
n°357474
theshockwa​ve
I work at a firm named Koslow
Posté le 10-04-2003 à 10:39:23  profilanswer
 

C'est ce que je dis ... C'est négligeable ... :D

n°357872
sr16
@*#%$*%§!!
Posté le 10-04-2003 à 15:30:00  profilanswer
 

theShOcKwAvE a écrit :

C'est ce que je dis ... C'est négligeable ... :D


 
Oui.
 
Tu notera que ce principe de tables peut être étendu a pas mal de choses. De la conversion de jeu de caractères a des tests d'appartenance a des ensembles.
 
Combiné avec les classes du C++, ça peut faire des trucs puissants.


---------------
TOPIC PERMANENT Matrox Parhelia

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

  Distinguer un caractère "lettre" d'un caractère quelconque

 

Sujets relatifs
URL -> CGI -> Chaine de caractère -> En faire une String ?Comment banaliser un caractere sous vb ?
Entrer une chaine de caractere en mode INVISIBLE [PERL]Newb - scanf et caractere
[c++] compter les voyelles dans une chaine de caracterechaine de caractere .
Taille d'une chaine de caractere ?????taille max d'une chaine de caractère en java?
Recherche dans une chaine de caractereFaire un mot de longeur n avec une lettre -->
Plus de sujets relatifs à : Distinguer un caractère "lettre" d'un caractère quelconque


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