小编Nir*_*adi的帖子

C++ std::stoul 不抛出异常

我有一个函数来检查字符串是否有效unsigned int

unsigned long int getNum(std::string s, int base)
{
    unsigned int n;
    try
    {
        n = std::stoul(s, nullptr, base);
        std::cout << errno << '\n';
        if (errno != 0)
        {
            std::cout << "ERROR" << '\n';
        }
    }
    catch (std::exception & e)
    {
        throw std::invalid_argument("Value is too big");
    }
    return n;
}
Run Code Online (Sandbox Code Playgroud)

0xfffffffff但是,当我输入诸如(9 f's)之类的值时,errno仍然为 0(并且不会引发异常)。为什么会这样呢?

c++ string-conversion

7
推荐指数
1
解决办法
7149
查看次数

标签 统计

c++ ×1

string-conversion ×1