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?
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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.
-- ;-)
On Sat, 28 Feb 2004 07:24:37 +0100, "J. KHOURY" <jkhoury@free.fr>
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.
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.
-- ;-)
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.
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
"J. KHOURY" <jkhoury@free.fr> 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.
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.
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.
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.