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

时间:2014-02-27 16:38:22

标签: c++ overflow text-extraction scalar underflow

从字符串中提取数据到标量(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;
}

1 个答案:

答案 0 :(得分:0)

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