Показать полную графическую версию : Как изящно преобразовать строку в число на С++?
В Делфях есть StrToInt, который возвращает ошибку, точнее генерирует исключение, если преобразование сорвалось, то все замечательно. В С++ нашел только стандартную функцию (блин, забыл название)
но она в случае ошибки возвращает ноль, И что мне не нравится, так это то, что ноль тоже имеет право на существование. Решал эту проблему под конкретную ситуацию нагромождением лишних проверок последующих символов, сейчас опять надо, но надоело же уже неправильно делать, как это сделать более удобным способом?
есть char* itoa(int,char*,int)
возвращает нулевой указатель на строку если че не так.
и наоборот int atoi(char*)
Исправлено: Vaulter, 20:53 11-02-2003
Crew
std::stream либо по сишному sscanf.
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?
Crew
Очепятался, я имел ввиду std::sstream, исключение бросит вроде. А со ssacnf'ом ты ошибся, она возвращает код ошибки зависящий от успешности считывания строки во что-либо.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.
Available in ZeroNet 1osznRoVratMCN3bFoFpR2pSV5c9z6sTC