Войти

Показать полную графическую версию : Как изящно преобразовать строку в число на С++?


Crew
11-02-2003, 00:10
В Делфях есть StrToInt, который возвращает  ошибку, точнее генерирует исключение, если преобразование сорвалось, то все замечательно. В С++ нашел только стандартную функцию (блин, забыл название)
но она в случае ошибки возвращает ноль, И что мне не нравится, так это то, что ноль тоже имеет право на существование. Решал эту проблему под конкретную ситуацию нагромождением лишних проверок последующих символов, сейчас опять надо, но надоело же уже неправильно делать, как это сделать более удобным способом?

Vaulter
11-02-2003, 02:19
есть char* itoa(int,char*,int)
возвращает нулевой указатель на строку если че не так.
и наоборот int atoi(char*)




Исправлено: Vaulter, 20:53 11-02-2003

ivank
11-02-2003, 18:36
Crew
std::stream либо по сишному sscanf.

Crew
12-02-2003, 00:19
Vaulter
есть char* itoa(int,char*,int)
возвращает нулевой указатель на строку если че не так.
и наоборот int atoi(char*)
itoa конвертирует число в строку, речь не об этом
atoi (блин, забыл название)
как раз и вызывает проблемы с нулем, так как этот злополучный 0  для нее код ошибки конвертации

ivank
либо по сишному sscanf
Тоже вернет 0


Добавлено:

std::stream

пространство имен std, насколько я знаю не может быть подключено к Borland 3.1, даже если скопировать файлы.
А посмотреть справку в MSDN я не могу, он у меня не ставится...
можно поподробнее? std::stream вызывает исключение или тоже 0?

ivank
12-02-2003, 20:35
Crew
Очепятался, я имел ввиду std::sstream, исключение бросит вроде. А со ssacnf'ом ты ошибся, она возвращает код ошибки зависящий от успешности считывания строки во что-либо.

Crew
12-02-2003, 21:31
ivank
Да, моя неправда




© OSzone.net 2001-2012