Comment savoir si dans un tab dechar il y a des entier et des reel ?

Comment savoir si dans un tab dechar il y a des entier et des reel ? - C++ - Programmation

Marsh Posté le 18-04-2010 à 17:57:46    

Bonjour,
Dans le cadre d'un projet, je suis amené à lire des textbox et écrire dans un fichier certaines valeurs.
Seulement, l'utilisateur doit écrire dans certaines textbox des valeurs entière et dans d'autres des valeurs réel.
Je sais que je suis dans le forum c++, et que je code actuellement en .net c++, mais ce problème est aussi valable en c++.
 
Donc voila, je récupére les valeurs des textbox dans un char* ( elle sont initialement en String^, je peux donc si il le faut les convertir en std::string ) .
 
Maintenant je me demande comment savoir si l'utilsateur à bien entré dans la textbox un entier, ou un réel ( avec un '.' et non une ',' ) .
Je pensais tester toutes les cases du char* , jusqu'au caractère '\0', et si il y a que des caractère de chiffres alors c'est bon dans le cas d'un nombre entier.
Dans le cas d'un réel, je test si il n'y a que des chiffre et un seul '.' .
 
Auriez-vous peut-être une méthode plus simple ?  
 
Merci beaucoup

Reply

Marsh Posté le 18-04-2010 à 17:57:46   

Reply

Marsh Posté le 18-04-2010 à 21:18:44    

boost::regex, boost::spirit au choix

Reply

Marsh Posté le 19-04-2010 à 09:47:13    

Merci de ta réponse.
J'ai trouvé quelques tuto sur boost::regex mais c'est vraiment compliqué à utiliser ( à première vu ).
Je ne comprend pas vraiment quel méthode utiliser pour faire mes tests.
 
Pourrait-tu me donner un petit exemple d'utilisation rapide ?
Merci beaucoup

Reply

Marsh Posté le 19-04-2010 à 10:11:52    

c'ets des expressions regulière :o, donc goto google.

Reply

Marsh Posté le 19-04-2010 à 10:19:20    

A l'endroit ou la validation se fait, je tente l'evaluation (strtol, strtod me semblent etre fait pour ca) et si elle echoue je donne un message d'erreur.  Si elle reussit, je stocke le resultat evalue et la suite utilise celui-ci.


---------------
The truth is rarely pure and never simple (Oscar Wilde)
Reply

Marsh Posté le 19-04-2010 à 11:37:14    

Alors si je comprend bien strtol et strtod convertissent du string en long ou double.
Seulement si dans la textbox ou je dois lire un entier,  le monsieur à entrer un réel, je ne me rendrais pas compte qu'il ait entré un réel ? Car la fonction strtol fera un arrondi pour que cela fasse un entier ?

Reply

Marsh Posté le 19-04-2010 à 11:39:40    

Il y a un parametre qui indique ou la chaine consideree s'arrete.  Tu devrais encore verifier qu'il n'y a que des blancs jusqu'a la fin (mon experience me dit que les interdire n'est pas un bon choix).


---------------
The truth is rarely pure and never simple (Oscar Wilde)
Reply

Sujets relatifs:

Leave a Replay

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