C++ std::cin.fail() 方法

2025 年 3 月 25 日 | 阅读 2 分钟

为了确定标准输入 (std::cin) 的输入操作是否失败,请使用 C++ 函数 std::cin.fail()。它通常用于在执行输入操作后确定其是否成功。

(std::ios::failbit, std::ios::badbit, std::ios::eofbit) 输入状态标志

  • 当输入操作失败时,流(本例中为 std::cin)上会设置 std::ios::failbit 标志。
  • 当流出现重大问题(例如内存分配失败)时,会设置 std::ios::badbit 标志。
  • 当输入流到达末尾时,会设置 std::ios::eofbit 标志。

std::cin.fail() 方法

  • 此函数是 std::basic_ios 模板的成员。如果 std::cin 流上设置了 failbit 或 badbit,它将返回 true。
  • 它通常用于在执行输入操作后确定其是否成功。
  • 如果 std::cin.fail() 返回 true,则认为输入操作失败(例如,由于无效输入)。

std::cin.clear() 方法

  • 在输入操作失败时,流的错误状态标志(failbit、badbit 和 eofbit)会被设置,这可能会阻止后续输入操作。
  • std::cin.clear() 会清除错误状态标志,从而允许执行额外的输入操作。

std::cin.ignore() 方法

  • std::cin.ignore(n, delim) 方法从输入流中删除字符,直到它遇到分隔符 delim,最多可删除 n 个字符。
  • 它通常在 std::cin.clear() 之后使用,以删除失败输入过程后留下的任何错误输入。

伪代码

  1. 显示提示,要求用户输入一个数字。
  2. 使用 std::cin 读取用户的输入。
  3. 使用 std::cin.fail() 检查输入操作是否失败。
  4. 如果 std::cin.fail() 返回 true,则显示错误消息,并使用 std::cin.clear() 清除 std::cin 的错误状态。
  5. 使用 std::cin.ignore() 丢弃 std::cin 中剩余的任何无效输入。
  6. 重复步骤 1-5,直到收到有效输入。
  7. 收到有效输入后,根据需要处理输入。

程序 1

让我们举一个例子来说明 C++ 中的 std::cin.fail() 函数

输出

Std::cin.fail() method in C++

程序 2

让我们再举一个例子来说明 C++ 中的 std::cin.fail() 函数

输出

Std::cin.fail() method in C++