c++ - 如何在 C++ 中使用 std::stoi() 验证 int 输入?

标签 c++ string validation int

有没有办法在 C++ 中使用 std::stoi() 检查字符串输入是否可转换为 int? (例如,我可以检查是否会抛出 invalid_argument 异常吗?)

一个不起作用的例子,但希望能解释我正在尝试做的事情:

    string response;
    cout << prompt;

    if (std::stoi(response) throws invalid_argument) { //Something like this
        return std::stoi(response);
    }
    else {
        badInput = true;
        cout << "Invalid input. Please try again!\n";
    }

研究:
我已经找到了几种检查字符串是否为 int 的方法,但我希望有一种方法可以使用 std::stoi() 来实现,但我一直找不到还没有。

最佳答案

你应该在抛出异常时捕获它,而不是试图预先确定它是否会被抛出。

string response; 
cin >> response;

try {
    return std::stoi(response);
}
catch (...) {
    badInput = true;
    cout << "Invalid input. Please try again!\n";
}

关于c++ - 如何在 C++ 中使用 std::stoi() 验证 int 输入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40031543/

相关文章:

c++ - std::getline 输入在 C++ 中无法正常工作

string - 在 Haskell 中比较两个字符串

xml - Clojure strip边距

asp.net - 如何仅在单击按钮或输入时触发验证 :Submit

c++ - Boost 在当前目录中看不到 jamfile

c++ - 如何检查忍者并行构建的返回值?

c++ - 为什么编译器会提示对齐?

c - 在 C 中进行二分查找时遇到问题

javascript - 禁用下一页按钮,直到回答所有单选按钮组

java - 使用 XML Schema、DTD、RelaxNG 和 Schematron 验证 DocBook 文档