Страницы

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

пятница, 24 января 2020 г.

Функция, приводящая строку к целому число, которая выбрасывает исключение

#cpp #исключения


Какая есть в С++ функция, которая приводит строку к целому числу и выбрасывает исключение
если преобразование не удалось? atoi ничего не выбрасывает.
    


Ответы

Ответ 1



Вам нужна функция std::stoi Функция пытается сконвертировать строку в int, если не получилось - выкидывает исключение std::invalid_argument. Преобразование считается неудавшимся, если после отрезания максимального количества пробелов в начале строки строка будет начинаться не на цифру, и не на пару "-" плюс цифра, и не на пару "+" плюс цифра (то есть допустимые варианты начала - любая цифра, или знак минуса и хотя бы одна цифра, или знак плюса и хотя бы одна цифра). Корректно сконвертируются, например, следующие строки: "42", "+42", "-42", " 42", " -42", "42aaa", "-42 42". Не сконвертируются (и выбросят исключения), следующие строки: "a42", "- 42", " 42", " -a42", "a42aaa". Ссылка для экспериментов: ссылка Код: #include #include #include int main() { try { std::string test = "- 42"; int myint = stoi(test); std::cout << myint << '\n'; } catch (std::exception &e) { std::cout << "Exception catched : " << e.what() << std::endl; } return 0; }

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

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