从字符串中提取数据到标量(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;
}
答案 0 :(得分:0)
考虑新的C++11 conversion functions,例如std::stoi
。在这种情况下,他们应该抛出std::out_of_range
例外。不幸的是,这不会直接处理char
案例,但您可以先转换为int
,然后手动检查范围。