首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在C++中验证输入是两个数字之间的整数?

如何在C++中验证输入是两个数字之间的整数?
EN

Stack Overflow用户
提问于 2020-09-29 03:15:31
回答 2查看 1.5K关注 0票数 0

我有这样的事情:

代码语言:javascript
运行
复制
while (!(cin >> num) || (cin.get() != '\n')){
    cin.clear();
    cin.ignore(100, '\n');  
}

但是,我无法确定在哪里验证数字在1到10之间,而不导致程序挂起。

EN

回答 2

Stack Overflow用户

发布于 2020-09-29 03:28:57

您可以接受一个std::string,然后使用std::stoi验证输入,如下所示

代码语言:javascript
运行
复制
int getIntInput(int from, int to) {

    std::string input;
    bool isValidInput = false;
    int validinput;

    while(!isValidInput) {
        try {
            std::cout << "\nPlease Enter a valid input between "<< from <<" and " << to <<":\t";
            std::cin >> input;

            size_t takenChars;
            validinput = std::stoi(input, &takenChars);
            if (validinput >= from && validinput <= to && takenChars == input.size()) isValidInput = true;
        } catch (...) {
        }
    }

    return validinput;
}


int main()
{
    std::cout << getIntInput(-3, 2);
}
票数 1
EN

Stack Overflow用户

发布于 2020-09-29 04:29:02

代码语言:javascript
运行
复制
int input;
std::cin >> input;
if ("max" > input && input > "min")
{
//what you want to do 
}
else{
//error handling
}

其中max和min是你设定的两个数字作为你的边界。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64112347

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档