我在使用以下代码时遇到了一些问题。我在Xcode(OS X)中使用它。
[取消了我对该代码的第一次尝试]
如何输入reset std :: cin?我尝试输入另一个值,但我不能,因为std :: cin在错误的值之后似乎不再起作用了。
UPD2 在我的第二次尝试中,我使用此代码:
for ( unsigned char i = 0; i < 5; i++ ) {
int value = 0;
std::cout << "\n>> Enter \"value\": ";
std::cin >> value;
if ( std::cin.fail() ) {
std::cin.clear();
std::cin.ignore();
std::cout << "Error: It's not integer value!\n";
} else {
std::cout << "The value format is ok!\n";
}
std::cout << "value = " << value << std::endl;
}
这里我只是在循环中输入5个值。每次我检查错误。当我设置错误的值(“asdf”)时,std :: cin变得疯狂并且不再起作用。我得到了这个输出:
>> Enter "value": 4
The value format is ok!
value = 4
>> Enter "value": 234
The value format is ok!
value = 234
>> Enter "value": asdfghjkl
Error: It's not integer value!
value = 0
>> Enter "value": Error: It's not integer value!
value = 0
>> Enter "value": Error: It's not integer value!
value = 0
234
234
78
345
657
345
dsf
f
答案 0 :(得分:5)
当条件show databases;
发生时,您可以使用
std::cin.fail()
然后使用std::cin.clear();
std::cin.ignore();
语句继续循环。 continue;
清除错误标志并设置新错误标志,std::cin.clear()
有效地忽略它们(通过提取并丢弃它们)。
来源: