cin.clear();
时间: 2024-02-21 09:00:38 浏览: 58
click&clean;
3星 · 编辑精心推荐
`cin.clear()` 是 C++ 标准库中 `istream` 类的一个成员函数,用于清除流的状态标志。在 C++ 中,当输入流(如 `cin`)遇到错误时(如输入类型不匹配或输入流已到达文件结尾),流的状态标志会被设置为相应的错误标志。当这些状态标志被设置后,流将不再从输入中读取数据。此时,如果需要继续从输入中读取数据,就可以使用 `cin.clear()` 函数将流的状态标志清除,以便继续读取数据。
举个例子,假设我们有以下代码:
```
int x;
cin >> x;
```
如果用户输入的不是一个整数,那么 `cin` 将会进入错误状态,并且不会再从输入中读取数据。此时可以加入 `cin.clear()` 函数来清除错误状态,然后再次读取数据,例如:
```
int x;
while (true) {
cin >> x;
if (cin.fail()) {
cin.clear(); // 清除状态标志
cin.ignore(1000, '\n'); // 忽略输入中的非法字符
continue;
}
break;
}
```
这个程序会不断从输入中读取数据,如果读取到非法字符,则清除错误标志并忽略输入中的非法字符,然后重新读取数据。注意,在清除错误标志后,我们还需要使用 `cin.ignore()` 函数来忽略输入中的非法字符,以免这些字符影响下一次的输入。
阅读全文