从std :: string转换为uint8

时间:2012-03-07 12:55:01

标签: c++ stdstring

指的是这里提供的漂亮的解决方案, Convert string to int with bool/fail in C++

我想将std :: string转换为8位数字(无符号或有符号) 问题是因为8位数字表示为char,因此解析错误 (试图解析1位以上的任何东西 - 比如10 - 失败)

有什么想法吗?

2 个答案:

答案 0 :(得分:4)

使用模板专业化:

template <typename T>
void Convert(const std::string& source, T& target)
{
    target = boost::lexical_cast<T>(source);
}

template <>
void Convert(const std::string& source, int8_t& target)
{
    int value = boost::lexical_cast<int>(source);

    if(value < std::numeric_limits<int8_t>::min() || value > std::numeric_limits<int8_t>::max())
    {
        //handle error
    }
    else
    {
        target = (int8_t)value;
    }
}

答案 1 :(得分:1)

将数字解析为int,然后将其转换为uint8_t。您也可以执行绑定检查。