命名空间
变体
操作

std::basic_ios<CharT,Traits>::clear

来自 cppreference.com
< cpp‎ | io‎ | basic ios
 
 
 
 

通过将它们分配给 state 的值来设置流错误状态标志。默认情况下,分配 std::ios_base::goodbit,这将清除所有错误状态标志。

如果 rdbuf() 是一个空指针(即没有关联的流缓冲区),则分配 state | std::ios_base::badbit

内容

[编辑] 参数

state - 新的错误状态标志设置。它可以是以下常量的组合
常量 解释
goodbit 无错误
badbit 不可恢复的流错误
failbit 输入/输出操作失败(格式化或提取错误)
eofbit 关联的输入序列已到达文件末尾

[编辑] 返回值

(无)

[编辑] 异常

如果新的错误状态包含一个也包含在 exceptions() 掩码中的位,则抛出类型为 failure 的异常。

[编辑] 示例

clear() 不带参数可用于在意外输入后取消设置 failbit;对于 std::cin.putback(c),请参阅 ungetc

#include <iostream>
#include <string>
 
int main()
{
    for (char c : {'\n', '4', '1', '.', '3', '\n', 'Z', 'Y', 'X'})
        std::cin.putback(c); // emulate user's input (not portable: see ungetc Notes)
 
    double n;
    while (std::cout << "Please, enter a number: " && !(std::cin >> n))
    {
        std::cin.clear();
        std::string line;
        std::getline(std::cin, line);
        std::cout << line << "\nI am sorry, but '" << line << "' is not a number\n";
    }
    std::cout << n << "\nThank you for entering the number " << n << '\n';
}

输出

Please, enter a number: XYZ
I am sorry, but 'XYZ' is not a number
Please, enter a number: 3.14
Thank you for entering the number 3.14

[编辑] 缺陷报告

以下更改行为的缺陷报告被追溯应用于先前发布的 C++ 标准。

DR 应用于 已发布的行为 正确行为
LWG 412 C++98 如果当前错误状态
包含一个也包含在 exceptions() 掩码中的位,则会抛出异常
检查新的
错误状态而不是

[编辑] 另请参阅

设置状态标志
(公共成员函数) [编辑]
返回状态标志
(公共成员函数) [编辑]