我试过用下面的代码传递不同的输入,但是没有得到打印的信息:“哎呀,你没有输入ASCII字符,更不用说是y或n了!”我输入了不是字符类型的各种Unicode字符(基本上是在ALT +随机数字中打个招呼,例如™,š,²,Ž,±。这些都没有产生错误.Cin是否默默地忽略或放弃了不是ASCII字符可以std :: cin无法将命令行中的用户输入传递给类型为char的变量?
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:视窗10 64位,基于x64的处理器 编译:Visual Studio的社区2015年
我是不是能够通过搜索“提取非ASCII字符来解决这个问题cin C++“,看前三页
我很新的Stack Overflow,所以如果我违反了这个问题的任何规则或行为准则,请原谅我。我在learncpp.com上学习C++,并正在编写自己的代码来回答这个page的问题2。
更新:我想我的程序没有理由验证是否输入了字符。不过,我想也许我很好奇,知道我没有太在意这个计划是否真的有必要。
平原'char'永远不会超过127在普通系统上 –
@MM如果'char'实际上没有签名? –
如果它不是通过? OP说MSVC++ 2015. –