C ++ Обработка переполнения / недополнения при извлечении строки в скаляры

при извлечении данных из строки в скаляры (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

Решение

Рассмотрим новый C ++ 11 функции преобразования лайк std::stoi, Они должны бросить std::out_of_range исключение в таком случае. К сожалению, это не справится с char случай, но вы могли бы сначала преобразовать в int, затем проверьте диапазон вручную.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]