Преобразую значения из 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;
}
Комментариев нет:
Отправить комментарий