Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   Как изящно преобразовать строку в число на С++? (http://forum.oszone.net/showthread.php?t=30676)

Crew 11-02-2003 00:10 209667

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

Vaulter 11-02-2003 02:19 209668

есть char* itoa(int,char*,int)
возвращает нулевой указатель на строку если че не так.
и наоборот int atoi(char*)




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

ivank 11-02-2003 18:36 209669

Crew
std::stream либо по сишному sscanf.

Crew 12-02-2003 00:19 209670

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 209671

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

Crew 12-02-2003 21:31 209672

ivank
Да, моя неправда


Время: 02:30.

Время: 02:30.
© OSzone.net 2001-