从std::string转换为uint8



参考这里提供的美丽解决方案,在C++、中使用bool/fail将字符串转换为int

我想将std::字符串强制转换为8位数字(无符号或有符号)问题是,因为8位数字被表示为一个字符,所以它被解析错误
(试图解析任何超过1位数字的东西——比如10位——失败)

有什么想法吗?

使用模板专业化:

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;
    }
}

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

相关内容

  • 没有找到相关文章

最新更新