21xrx.com
2024-12-22 20:12:49 Sunday
登录
文章检索 我的文章 写文章
C++ 输入错误后重新输入的方法
2023-07-13 10:15:30 深夜i     --     --
C++ 输入 错误 重新输入 方法

在 C++ 编程中,处理输入错误是一个重要的问题,当用户输入了错误的值或者格式时,程序需要能够重新提示用户输入正确的值。以下是一些 C++ 输入错误后重新输入的方法。

一、使用循环结构

在使用 C++ 进行编程时,我们可以使用循环结构来处理输入错误。通过循环,程序会重复提示用户输入值,直到用户输入正确的值为止。例如:


int num;

do {

  cout << "Please enter an integer: ";

  cin >> num;

  if (cin.fail()) { // 检查输入是否失败

    cin.clear(); // 清空错误标志

    cin.ignore(numeric_limits<streamsize>::max(), '\n'); // 忽略输入中的错误字符

    cout << "Invalid input, please try again." << endl;

  }

} while (cin.fail());

在上面的代码中,我们使用 do...while 循环结构,不断提示用户输入一个整数,如果用户输入的不是整数,程序会清除输入流中的错误标志并忽略输入中的错误字符,然后重新提示用户输入。

二、使用递归

除了使用循环结构,我们还可以使用递归来处理输入错误。递归是一种函数自我调用的方式,当函数满足某些条件时,递归停止。例如:


int getInteger() {

  int num;

  cout << "Please enter an integer: ";

  cin >> num;

  if (cin.fail()) { // 检查输入是否失败

    cin.clear(); // 清空错误标志

    cin.ignore(numeric_limits<streamsize>::max(), '\n'); // 忽略输入中的错误字符

    cout << "Invalid input, please try again." << endl;

    return getInteger(); // 递归调用函数

  }

  return num;

}

在上面的代码中,我们定义了一个 getInteger() 函数,该函数首先提示用户输入一个整数,如果用户输入的不是整数,程序会清除输入流中的错误标志并忽略输入中的错误字符,然后重新提示用户输入。递归函数会一直调用自己,直到用户输入了正确的整数为止。

无论是使用循环结构还是递归,在处理输入错误时,我们需要清理输入流中的错误标志并忽略输入中的错误字符。这是因为输入错误后,错误标志会被设置为 true,如果不清理错误标志,程序会一直处于错误状态,导致程序崩溃。忽略输入中的错误字符是为了防止输入错误相同的值,例如,用户输入了 "abc",忽略输入中的错误字符后,用户下一次输入还是 "abc",程序会认为它是错误的值,然后重新提示用户输入。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复