Próbowałem przekazać różne dane wejściowe z poniższym kodem, ale nie udało się wydrukować komunikatu: "Ups, nie wprowadziłeś znaku ASCII, nie mówiąc już o tym, że jest y lub n!" Wprowadziłem różne znaki Unicode, które nie są typu char (w zasadzie usprawiedliwione wybijanie w ALT + liczb losowych, np. ™, š, ², Ž, ±. Żadna z nich nie spowodowała błędu. Czy cin cicho ignoruje lub odrzuca wejścia, które nie są znaków ASCIICzy std :: cin nie może przekazać danych wejściowych użytkownika z wiersza poleceń do zmiennej o typie znaku?
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 bit x64 procesor Kompilator Visual Studio Społeczność 2015
I nie był w stanie rozwiązać ten problem poprzez poszukiwanie „wydobyć charakter non-ASCII cin C++ "i patrząc na pierwsze trzy strony:
Jestem bardzo nowy w Stack Overflow, więc wybaczcie, jeśli naruszyłem jakiekolwiek zasady lub kodeks postępowania z tym pytaniem. Uczę się C++ na stronie learncpp.com i piszę własny kod, aby odpowiedzieć na pytanie 2 tego page.
Aktualizacja: Myślę, że nie ma powodu, aby mój program sprawdzał, czy wprowadzono znak. Myślę jednak, że być może byłam tak ciekawa, że nie zastanawiałam się zbytnio nad tym, czy program był rzeczywiście potrzebny.
zwykły 'char' nigdy nie przekroczy 127 na wspólnych systemach –
@MM co jeśli 'char' jest faktycznie unsigned? –
co, jeśli tak nie jest? OP powiedział MSVC++ 2015. –