首页 >后端开发 >C++ >如何在 C 中有效验证用户输入的整数?

如何在 C 中有效验证用户输入的整数?

Patricia Arquette
Patricia Arquette原创
2024-12-07 02:47:14304浏览

How Can I Effectively Verify Integer User Input in C  ?

验证用户输入为整数

问题陈述

在 C 程序中,确保用户输入是至关重要的是预期的格式,特别是在执行数学运算时。本文讨论如何确定用户提供的输入是否为整数。如果输入的不是整数,程序会提示用户重新输入有效的整数。

解决方案

验证用户输入的方法主要有两种作为整数:

1。使用 cin.fail():

  • 使用 cin >> 读取输入。
  • 使用 if (cin.fail() 检查输入流的状态).
  • 如果 cin.fail() 为 true,则表示输入不是整数。

2。使用 std::getline 和字符串操作:

  • 使用 std::getline(std::cin, theInput) 将输入捕获为字符串。
  • 检查使用 if (theInput.find_first_not_of("0123456789") != 查找任何非数字字符的字符串std::string::npos)。
  • 如果条件为真,则表示输入包含非数字字符。

实现

下面是实现 std::getline 和字符串操作的代码片段做法:

#include <iostream>
#include <string>

int main() {

    std::string theInput;
    int inputAsInt;

    std::getline(std::cin, theInput);

    while(std::cin.fail() || std::cin.eof() || theInput.find_first_not_of("0123456789") != std::string::npos) {

        std::cout << "Error" << std::endl;

        if( theInput.find_first_not_of("0123456789") == std::string::npos) {
            std::cin.clear();
            std::cin.ignore(256,'\n');
        }

        std::getline(std::cin, theInput);
    }

    std::string::size_type st;
    inputAsInt = std::stoi(theInput,&amp;st);
    std::cout << inputAsInt << std::endl;
    return 0;
}

此代码不断提示用户输入整数,直到输入有效的整数。它处理用户输入非数字字符或提供空输入的情况。

以上是如何在 C 中有效验证用户输入的整数?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn