Comme le dit le titre, je veux faire une vérification d'input pour qu'il ne soit possible de n'entrer que des lettres, là sa va, mais, mon code me renvoi false quand il rencontre un accents.
Quelqu'un a une idée pour que isAlpha prenne en compte les accents?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 inline bool isAlpha(const string & s) { static const char alpha[] = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZÄÅÇÈÀÉÑÖÜàâçèéêîôùûé"; if (s.empty()) return false; for (int i = 0; i < s.size(); i++) { if (!((s[i] == ' ') || (s[i] == '-') || strchr(alpha, s[i]) != NULL)) return false; } return true; } // J'appelle cette fonction quand je veut faire une vérification. string inputAlpha() { string input; bool valide = false; do { getline(cin, input); valide = isAlpha(input); if (!valide) cout << "N'entrer que des lettres, espaces et tirets" << endl; } while (!valide); return input; }
La bonne nouvelle c'est qu'il ne plante pas (V) (;,,;) (V)
Édit:
Je sais pas si sa influence, mais dans mon main j'utilise un SetConsoleOutputCP(1252)
Sur mon ordinateur les accents son afficher mais pas sur un autre.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 #include <windows.h> UINT default_codepage = GetConsoleOutputCP(); void main() { SetConsoleOutputCP(1252); //Le code du main.. SetConsoleOutputCP(default_codepage); }
Partager