Преобразование int к std::string и обработка ошибок
От: FrozenHeart  
Дата: 27.03.14 11:44
Оценка: -1
Имеется boost::lexical_cast. В случае неудачной попытки преобразования он выбрасывает исключение типа boost::bad_lexical_cast. Предположим, что у нас есть структура, одно из полей которой имеет тип int. Нам надо преобразовать его значение к объекту класса std::string при помощи boost::lexical_cast. Стали бы Вы в подобном случае писать try-catch блок или оставили код без обработки ошибок? Аргументируйте, пожалуйста.
avalon/1.0.434
Re: Преобразование int к std::string и обработка ошибок
От: Кодт Россия  
Дата: 27.03.14 11:54
Оценка:
Здравствуйте, FrozenHeart, Вы писали:

FH>Имеется boost::lexical_cast. В случае неудачной попытки преобразования он выбрасывает исключение типа boost::bad_lexical_cast. Предположим, что у нас есть структура, одно из полей которой имеет тип int. Нам надо преобразовать его значение к объекту класса std::string при помощи boost::lexical_cast. Стали бы Вы в подобном случае писать try-catch блок или оставили код без обработки ошибок? Аргументируйте, пожалуйста.


Как ты себе представляешь неудачное преобразование int к string?
Плюнь и забей.

Единственный момент: lexical_cast пользуется глобальной локалью. Для int это некритично, а вот float — можешь отхватить десятичную запятую вместо точки (причём, что коварно, в обратную сторону он захочет получить точку).
Перекуём баги на фичи!
Re[2]: Преобразование int к std::string и обработка ошибок
От: zaufi Земля  
Дата: 27.03.14 12:29
Оценка:
Здравствуйте, Кодт, Вы писали:

К>Здравствуйте, FrozenHeart, Вы писали:


FH>>Имеется boost::lexical_cast. В случае неудачной попытки преобразования он выбрасывает исключение типа boost::bad_lexical_cast. Предположим, что у нас есть структура, одно из полей которой имеет тип int. Нам надо преобразовать его значение к объекту класса std::string при помощи boost::lexical_cast. Стали бы Вы в подобном случае писать try-catch блок или оставили код без обработки ошибок? Аргументируйте, пожалуйста.


К>Как ты себе представляешь неудачное преобразование int к string?


std::bad_alloc на создании строки например %) ... или чегонить внутри lexical_cast (вроде он на stringstream работал, не знаю как сейчас)...
ясн, что для "обычных" компьютеров можно "плюнуть и забить", но для калькуляторов и прочих нано девайсов, может и "выстрелит" %)
Re[3]: Преобразование int к std::string и обработка ошибок
От: Кодт Россия  
Дата: 27.03.14 12:50
Оценка:
Здравствуйте, zaufi, Вы писали:

К>>Как ты себе представляешь неудачное преобразование int к string?


Z>std::bad_alloc на создании строки например %) ... или чегонить внутри lexical_cast (вроде он на stringstream работал, не знаю как сейчас)...

Z>ясн, что для "обычных" компьютеров можно "плюнуть и забить", но для калькуляторов и прочих нано девайсов, может и "выстрелит" %)

Ну, std::bad_alloc — неизбежно, раз мы с std::string имеем дело. Тем более, что такое исключение при работе с мелкими объектами — это уже агония, можно практически сразу terminate() выполнять.
Что-либо другое вылететь не может, stringstream инициализируется с уже существующей глобальной локалью.

Для калькуляторов lexical_cast — имхо, только для прототипирования.
Перекуём баги на фичи!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.