我試過用下面的代碼傳遞不同的輸入,但是沒有得到打印的信息:「哎呀,你沒有輸入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. –