Страницы

Поиск по вопросам

понедельник, 12 ноября 2018 г.

Преобразование огромных чисел

Преобразую значения из string в long long
val = atoll(a[i].c_str());
Как защититься от Васи Пупкина, который записал число, которое большее максимального (9223372036854775807)? Нужно приравнивать val к 0.
Программа ошибок не выдаёт, однако наличие такой недоработки меня напрягает.


Ответ

Ну, как вариант - использовать stoll и перехватывать исключения...
int main(int argc, const char * argv[]) { string s; cin >> s; long long l; try { l = stoll(s); } catch(out_of_range&) { l = 0; } catch(invalid_argument&) { l = -1; } cout << "s = " << s << endl; cout << "l = " << l << endl; }

Комментариев нет:

Отправить комментарий