使用std::cin时如何重置它
How to reset std::cin when using it?
我有一些问题与以下代码。我用它在Xcode (OS X)。
for ( unsigned char i = 0; i < 5; i++ ) {
int value;
std::cout << ">> Enter "value": ";
std::cin >> value;
if ( std::cin.fail() ) { 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": 90
The value format is ok!
value = 90
>> Enter "value": 2343
The value format is ok!
value = 2343
>> Enter "value": 34
The value format is ok!
value = 34
>> Enter "value": asdf
Error: It's not integer value!
value = 0
>> Enter "value": Error: It's not integer value!
value = 0
80
32423
adf
3843
asdf
asdf
23423
如何输入reset std::cin?我尝试输入另一个值,但我不能,因为std::cin似乎不再工作后,我的错误值。
您可以使用,当条件发生时,std::cin.fail()
:
std::cin.clear();
std::cin.ignore();
然后继续循环,使用continue;
语句。std::cin.clear()
清除错误标志,并设置新的错误标志,std::cin.ignore()
有效地忽略错误标志(通过提取和丢弃)。
来源:
-
cin.ignore()
-
cin.clear()
相关文章:
- QTableView:endMoveRows在模型中重置水平页眉大小
- 更改"child's parent's style sheet"时如何将孩子的样式表重置为 Qt 默认样式表?
- 切换大小写后如何阻止变量重置?
- 当客户端在 write() 期间终止连接时,由对等套接字错误重置连接
- 移动后是否需要重置标准::列表?
- 在读取文件后重置句柄
- C++变量在调用 x64 程序集函数后重置为 0
- Adafruit 羽毛RFM69HCW在使用过程中会冻结,需要硬重置
- 变量始终在函数中重置为默认值
- 为什么我的 LogError 函数会重置 GetLastError?
- 无法重置 std::shared_ptr 标准::设置<>中的对象...为什么?
- C++上的手动重置事件(来自 C#)实现:如何避免争用条件
- 如何在IQualProp::get_AvgFrameRate中重置帧速率?
- 奇怪的UC3 用户页面 NVRAM 使用后重置行为
- 如何在接触时重置我的角色位置?
- C++ - 重置字符串流不会重置获取位置或清除标志吗?
- 如果输入类型与目标类型不同,"cin"变量是否重置为某个默认值?
- C++:cin.clear() 不会重置流
- cin.clear() 不会重置 cin 对象
- 使用std::cin时如何重置它