J'ai essayé de passer différentes entrées avec le code ci-dessous, mais je n'ai pas réussi à imprimer le message: "Oups, vous n'avez pas entré un caractère ASCII, et encore moins celui qui est y ou n!" J'ai saisi plusieurs caractères Unicode qui ne sont pas de type caractère (en principe, les caractères ALT + nombres aléatoires, p.ex. ™, š, ², Ž, ±, ne sont pas affichés.) Cinquièmement, les entrées qui ne sont pas ignorées ou ignorées caractères ASCIIEst-ce que std :: cin peut échouer à transmettre une entrée utilisateur dans la ligne de commande à une variable avec un type de caractère?
std::cout << "Would you like to play again? Enter y or n: ";
std::cin >> yOrN;
isChar = std::cin.fail();
//check if the user did not enter an ASCII char, e.g. test with a Unicode character
if (isChar)
{
std::cout << "Oops, you did not enter an ASCII char, let alone one that is y or n!\n";
std::cin.clear();
}
OS: Windows 10 64 bits, le processeur x64 compilateur: Communauté Visual studio 2015
Je n'ai pas pu résoudre ce problème par la recherche de « extraire un caractère non-ASCII C++ "et en regardant les trois premières pages
Je suis très nouveau sur Stack Overflow, alors pardonnez-moi si j'ai violé des règles ou un code de conduite avec cette question. J'apprends le C++ sur learncpp.com et j'écris mon propre code pour répondre à la question 2 de ce page. Mise à jour: Je suppose que mon programme n'a aucune raison de valider si un caractère est entré. Cependant, je devine peut-être que j'étais si curieux de savoir que je ne pensais pas trop à savoir si c'était vraiment nécessaire pour le programme.
plaine 'char' ne dépassera jamais 127 sur les systèmes communs –
@MM que se passe-t-il si 'char' est réellement non signé? –
Et si ce n'est pas le cas? OP dit MSVC++ 2015. –