Empêcher la saisie...

enoitnaillal Messages postés 41 Date d'inscription jeudi 8 avril 2010 Statut Membre Dernière intervention 28 juin 2014 - 8 avril 2010 à 16:03
cs_ghuysmans99 Messages postés 3982 Date d'inscription jeudi 14 juillet 2005 Statut Membre Dernière intervention 30 juin 2013 - 14 avril 2010 à 10:33
Bonjour,
Existe-il un moyen d'empêcher la saisie (avec cin) de caractère autre que les lettres minuscules ? Et est-ce possible lorsqu'on tape plusieurs lettres ?

10 réponses

pop70 Messages postés 181 Date d'inscription mardi 6 avril 2010 Statut Membre Dernière intervention 7 janvier 2012 10
8 avril 2010 à 18:53
Oui : http://www.cppreference.com/wiki/fr/c/string/

Dans ton cas :
char a;
cin >> a;
if (islower(a))
{
cout << "Minuscule";
}




Pop70
0
cs_ghuysmans99 Messages postés 3982 Date d'inscription jeudi 14 juillet 2005 Statut Membre Dernière intervention 30 juin 2013 16
8 avril 2010 à 22:42
Si tu veux rester dans une façon simple de gérer ça, la solution que préconise pop70 me parait la plus simple : tester après la saisie la validité de celle-ci.
---
VB.NET is good ... VB6 is better
0
enoitnaillal Messages postés 41 Date d'inscription jeudi 8 avril 2010 Statut Membre Dernière intervention 28 juin 2014 1
9 avril 2010 à 14:41
Bonjour et merci à vous de m?avoir répondu. On ne peut donc pas effectuer de contrôle au moment de la saisie ?
0
pop70 Messages postés 181 Date d'inscription mardi 6 avril 2010 Statut Membre Dernière intervention 7 janvier 2012 10
9 avril 2010 à 15:33
Peut-être en cherchant du coté de
 cin.ignore()
,
cin.peek()
et
cin.putback()


Pop70
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
pop70 Messages postés 181 Date d'inscription mardi 6 avril 2010 Statut Membre Dernière intervention 7 janvier 2012 10
9 avril 2010 à 15:37
exemple :

char ch;
cout << "Entrez une phrase : ";
while (cin.get(ch) != '\n')
{
if (ch == 'A')
cin.putback ('a');
}

Ce code remplace A par a.



Pop70
0
pop70 Messages postés 181 Date d'inscription mardi 6 avril 2010 Statut Membre Dernière intervention 7 janvier 2012 10
9 avril 2010 à 15:43
J'ai trouvé :

int main()
{
cout << "Entrez une chaine : ";
string str;
cin >>str;


transform(str.begin(), str.end(), str.begin(), ::tolower);

cout << endl << str;
    return 0;
}


Existe aussi ::toupper pour mettre en majuscule


Pop70
0
enoitnaillal Messages postés 41 Date d'inscription jeudi 8 avril 2010 Statut Membre Dernière intervention 28 juin 2014 1
10 avril 2010 à 16:10
Merci pour vos réponses, donc ce n'est pas possible d'empêcher la saisie de tel ou tel caractère, il faut effectuer le test dans un deuxième temps, ai-je bien compris ?
0
pop70 Messages postés 181 Date d'inscription mardi 6 avril 2010 Statut Membre Dernière intervention 7 janvier 2012 10
10 avril 2010 à 18:53
Pas à ma connaissance, mais avec ceci, tu peut déjà essayer un truc comme faire une boucle, si il y a une majuscule, tu éfface l'écran de la console grâce à system("cls"), puis tu continues à demander des caractères.

char mot[255];
char carct;

cout << "Mot : ";
int i=0; 
while (cin.get(caract) != 0)
{
if (isupper(caract))
{
system("cls");
cout << "Mot : ";
}
else
{
mot[i] = caract;
i++;
}

}


je n'ai pas testé, mais à mon avis on peut y arriver comme ça.



Pop70
0
enoitnaillal Messages postés 41 Date d'inscription jeudi 8 avril 2010 Statut Membre Dernière intervention 28 juin 2014 1
13 avril 2010 à 14:05
Merci pour votre aide, mais cela ne résout pas mon problème, en fait c'est plus simple de tester le contenu de la phrase dans un deuxième temps.
0
cs_ghuysmans99 Messages postés 3982 Date d'inscription jeudi 14 juillet 2005 Statut Membre Dernière intervention 30 juin 2013 16
14 avril 2010 à 10:33
D'accord avec toi ...
---
VB.NET is good ... VB6 is better
0
Rejoignez-nous