при извлечении данных из строки в скаляры (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;
}
Рассмотрим новый C ++ 11 функции преобразования лайк std::stoi
, Они должны бросить std::out_of_range
исключение в таком случае. К сожалению, это не справится с char
случай, но вы могли бы сначала преобразовать в int
, затем проверьте диапазон вручную.
Других решений пока нет …