参考这里提供的美丽解决方案,在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
。您也可以执行绑定检查。