21xrx.com
2024-12-22 22:08:03 Sunday
登录
文章检索 我的文章 写文章
如何在C++中限制输入只能为整数
2023-07-01 11:52:54 深夜i     --     --
C++ 限制输入 整数 验证输入 数据类型

在C++中,限制输入只能为整数是一个非常常见的需求,特别是在需要用户输入数字的程序中。下面介绍几种方法可以实现这一需求。

1. 使用整型变量并添加输入验证

在C++中,整型变量只能存储整数值。我们可以利用这一点来限制输入只能为整数。在输入前,我们可以定义一个整型变量来接收用户输入,并在输入后进行验证,以确保它是一个整数。如果用户输入了非整数值,则要求重新输入。

以下是一个示例代码:


int num;

bool valid = false;

while (!valid) {

  cout << "请输入一个整数:" << endl;

  cin >> num;

  if (cin.fail()) { // 判断输入是否合法

    cout << "输入的不是整数,请重新输入!" << endl;

    cin.clear(); // 清除错误标记

    cin.ignore(numeric_limits<streamsize>::max(), '\n'); // 忽略非数字字符

  } else

    valid = true;

  

}

cout << "输入的整数是:" << num << endl;

在上面的代码中,我们通过`cin.fail()`函数来判断输入是否合法。如果不合法,我们清除错误标记并忽略非数字字符,然后要求用户重新输入。否则,我们将`valid`变量设置为`true`,退出循环并打印输入的整数。

2. 使用字符串变量并转换为整数

另一种方法是使用字符串变量来接收用户输入,然后将其转换为整数。在此过程中,我们可以检查字符串是否包含非数字字符。如果是,则要求重新输入。

以下是一个示例代码:


string input;

bool valid = false;

int num;

while (!valid) {

  cout << "请输入一个整数:" << endl;

  cin >> input;

  // 检查输入是否合法

  bool is_number = !input.empty() && find_if(input.begin(),

            input.end(), [](char c) { return !isdigit(c); }) == input.end();

  if (!is_number)

    cout << "输入的不是整数 else {

    num = stoi(input); // 字符串转换为整数

    valid = true;

  }

}

cout << "输入的整数是:" << num << endl;

在上面的代码中,我们使用`isdigit()`函数来检查字符串是否包含非数字字符。如果是,则要求用户重新输入。否则,我们使用`stoi()`函数将字符串转换为整数,并将`valid`变量设置为`true`,退出循环并打印输入的整数。

需要注意的是,如果用户输入的整数超出了整型变量的范围,那么`stoi()`函数将抛出一个`out_of_range`异常。为了处理这种异常,我们需要在代码中添加异常处理语句。

以上两种方法都可以实现在C++中限制输入只能为整数的需求。根据需求和个人喜好,可以选择其中任何一种进行实现。

  
  

评论区

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