Bonjour,
Existe-il un moyen d’empêcher la saisie (avec cin) de caractère autre que les lettres minuscules ?
Bonjour,
Existe-il un moyen d’empêcher la saisie (avec cin) de caractère autre que les lettres minuscules ?
Bonjour,
Je me demande si vous voyez le problème du bon sens. Pour répondre correctement, je ne connais pas de moyen pour empecher la saisie de majuscules.
Par contre, je connais tout un tas de moyen pour faire en sorte que les majuscules ne me gênent pas.
Par exemple, nous continuons de demander à l'utilisateur de taper quelque chose, tant que celui ci est une majuscule:
Par exemple.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 { char c = 'A'; do { cin >> c; }while ( c >= 'A' && c <= 'Z' )
Sinon, on peut toujours transformer les majuscules en minuscules avec ne fonction du genre tolower().
Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi
Ma page sur DVP
Mon Portfolio
Qui connaît l'erreur, connaît la solution.
Bonjour LitleWhite,
Oui en effet puisqu’il n’existe aucun moyen d’empêcher la saisie de majuscule j’ai pris la problème dans le mauvais sens, merci d’avoir éclairé ma lanterne. Je pensais qu’avec le code ascii on pouvait différencier les majuscules des minuscules. En fait les lettres accentuées, la ponctuation me pose aussi des problèmes que faire ?
La condition while (c >= 'A' && c <= 'Z') ne fonctionne que si le système utilise un jeu de caractères dérivé de l'ASCII (c'est le cas de la majorité des systèmes actuels). Une version totalement portable est : while (isupper(c)). En plus c'est plus simple comme ça non ? isupper est déclaré dans <cctype>, dans l'espace de noms std. Le caractère c doit avoir une valeur comprise entre 0 et 127.
Dans le code ASCII, 'a' est différent de 'A'. Mais pour transformer 'a' en 'A', il suffit de faire toupper('a') (toupper('a') vaut 'A'). toupper('A') n'a aucun effet ... l'inverse est tolower.
Pour les caractères accentués, c'est plus délicat :
- Ils ont un code qui n'appartient pas à l'intervalle 0 - 127.
- Les codes associés aux caractères accentués varient facilement d'un environnement à un autre. Sous Windows par exemple, les applications consoles (les applis en mode texte) et les applications graphiques (avec fenêtre) n'utilisent pas les mêmes codes. De Windows à Linux, n'en parlons même pas. Ainsi, sous Windows, si tu veux manipuler des caractères accentuées, la solution la plus simple consiste à convertir le fichier source au format MS-DOS (compatible avec la console) avant de compiler. Tu trouveras plus d'informations dans la FAQ.
Bonsoir Melem,
Merci pour cet éclaircissement. Comment programmeriez- vous cela ?
Partager