The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]




Версия для распечатки Пред. тема | След. тема
Новые ответы [ Отслеживать ]
inilib: большое число как строку, !*! cnupm, 04-Авг-08, 16:53  [смотреть все]
  • inilib: большое число как строку, !*! Vladyslav Lazarenko, 05:18 , 06-Авг-08 (1)
    Привет. Стало самому интересно, почему так. В функции "void registry::section_read(fstream &input_file, section& curr_section)" нашел следующее:


          if (is_int(value_string))
            curr_section.insert(key_string, atoi(value_string.c_str()));
          else if (is_double(value_string))
            curr_section.insert(key_string, atof(value_string.c_str()));
          else
            curr_section.insert(key_string, value_string);

    Где "is_int()" выглядит так:


    inline bool is_int(std::string value)
    {
       crop(value);
       if (value.size() == 0)
         return false;

       if (value.find_first_not_of("1234567890") < value.size())
         return false;

       return true;
    }

    Тоесть, в Вашем случае - никак. Только конвертировать обратно в строку.

    В целом же библиотека выглядит не солидно (та же проверка is_double() не учитывает "F" и т.п., не говоря уж о реализации). Можете исправить сами. Из альтернатив можно посмотреть на:

    Boost Program Options (http://www.boost.org/doc/libs/1_35_0/doc/html/program_option...)
    Quick FIX (http://www.quickfixengine.org/). Там есть класс по разборке INI файла, так что именно Ваш случай. Можете просто выдрать оттуда этот класс - Open Source.

    Удачи!

    - Влад




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру