OVH Cloud OVH Cloud

Contrôle le type de données

2 réponses
Avatar
J. KHOURY
Bonjour,



Je développe un programme en c++ (interface mode caractère) permettant de
faire de la saisie des données. Je veux contrôler le type de données que
l'utilisateur a saisit . Par exemple la donnée attendue est string et que
l'utilisateur saisie une donnée de type int, je dois lui afficher un message
d'erreur. Comment gérer le contrôle le type de données champ par champ?



Merci de votre aide.

2 réponses

Avatar
Fabien LE LEZ
On Sat, 28 Feb 2004 07:24:37 +0100, "J. KHOURY"
wrote:

Je développe un programme en c++ (interface mode caractère) permettant de
faire de la saisie des données. Je veux contrôler le type de données que
l'utilisateur a saisi


Habituellement, je lis des lignes entières par getline(), puis je
parse chaque ligne.

--
;-)

Avatar
Pierre Maurette
"J. KHOURY" a écrit...
Bonjour,



Je développe un programme en c++ (interface mode caractère) permettant de
faire de la saisie des données. Je veux contrôler le type de données que
l'utilisateur a saisit . Par exemple la donnée attendue est string et que
l'utilisateur saisie une donnée de type int, je dois lui afficher un
message

d'erreur. Comment gérer le contrôle le type de données champ par champ?
Votre exemple est bizarre. Avez-vous un exemple de saisie où "l'utilisateur

saisie une donnée de type int" qui n'est pas une chaîne de caractères ("un
string") valide?
Vous devriez prendre un peu de temps pour étudier le problème des entrées
clavier (et plus généralement des flux d'entrée) en C++, ce qui n'est pas
trivial. C'est le chapitre 15 dans la FAQ Lite et 27 (sauf erreur) dans la
FAQ.

http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ

http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html

La méthode de base pas propre à C++ est de saisir une chaîne de caractères
et de traiter une éventuelle erreur de conversion.
Les méthodes exposées dans les FAQ sont du même ordre d'idée, à ceci près
que la "conversion" est faite dans le cin (pour un int demandé par exemple).
Vous pouvez faire plus qu'un test d'erreur de conversion en vérifiant telle
ou telle contrainte sur la donnée saisie.
Enfin, vous pourrez envisager de traiter caractère par caractère pour une
gestion en masque de saisie. C'est efficace et ergonomique, mais je n'ai
d'expérience que dans un contexte non portable. L'idée est de conserver au
moins une valeur initiale (ou par défaut) si l'utilisateur fait n'importe
quoi.

Pierre