C++ 在将字符串提取到标量时处理溢出/下溢



将数据从字符串提取到标量(char,short,int...)时,我如何轻松知道我想要获取的值是否超过类型限制?

unsigned char          function(void)
{
    std::string        str = "259";
    std::ostringstream os(str);
    unsigned char      scalar; // could also be short, int, float or double
    if (str > /* limit of char */)
    {
        /* throw exception */
    }
    os >> scalar;
    return scalar;
}

考虑新的 C++11 转换函数,如 std::stoi 。在这种情况下,他们应该抛出std::out_of_range异常。不幸的是,这不会直接处理char的情况,但您可以先转换为int,然后手动检查范围。

最新更新