if (cin >> var){
//code 1
}
else{
//code 2
}
这是我的代码示例。 var
的类型为int,因此当用户输入非int值时,我不希望执行代码1。如果我输入字母或符号,代码1将不会执行,代码2将执行。问题是当用户输入双值(例如,3.5)时,代码1和代码2都将执行,但我只想执行代码2。代码1使用var
的截断值执行(例如,如果用户输入3.5,代码1执行就像用户输入3一样)我在代码2中使用std::cin.clear()
和std::cin.ignore()
,但它并没有什么不同。为什么会发生这种情况?如何解决?