指的是这里提供的漂亮的解决方案, Convert string to int with bool/fail in C++,
我想将std :: string转换为8位数字(无符号或有符号) 问题是因为8位数字表示为char,因此解析错误 (试图解析1位以上的任何东西 - 比如10 - 失败)
有什么想法吗?
答案 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
。您也可以执行绑定检查。