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.

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;
	}
Quelqu'un a une idée pour que isAlpha prenne en compte les accents?
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)
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);
}
Sur mon ordinateur les accents son afficher mais pas sur un autre.