Entonces apóyate de esto para los caracteres especiales:
en vez de utilizar isalpha utiliza la siguiente función
Código C++:
Ver originalbool esp_isalpha(const char &c){
switch(c){
case -92: // ñ
case -91: // Ñ
case -96: // á
case -75: // Á
case -126: // é
case -112: // É
case -95: // í
case -42: // Í
case -94: // ó
case -32: // Ó
case -93: // ú
case -23: // Ú
case -127: // ü
case -102: // Ü
return true;
break;
}
}