как при помощи inilib прочитать из конфига большое число как строку ?а то вот при таком конфиге:
[SECTION]
FIELD = 589993772150
такой код:
std::string sField = (std::string)cfgFile["SECTION"]["FIELD"];
std::cout << "sField is " << sField << "\n";
Выдает результат:
sField is 2147483647т.е. как сказать inilib что б она не пыталась сделать atoi к этому полю ?
Привет. Стало самому интересно, почему так. В функции "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.Удачи!
- Влад
>Из альтернатив можно посмотреть на:
>
>Boost Program Options (http://www.boost.org/doc/libs/1_35_0/doc/html/program_option...)А нету простенького-простенького примерчика использования?
ну что б как за основу взять
>>Из альтернатив можно посмотреть на:
>>
>>Boost Program Options (http://www.boost.org/doc/libs/1_35_0/doc/html/program_option...)
>
>А нету простенького-простенького примерчика использования?
>ну что б как за основу взятьПривет. Официальная документация вот здесь - http://www.boost.org/doc/libs/1_35_0/doc/html/program_option...
Там есть кое-какие примеры. Других у меня нет. Можно поспрашивать Владимира, автора этой библиотеки, в рассылке Boost User List. Я же использую её только для разбора параметров командной строки.
Удачи!
- Влад