Привет. Стало самому интересно, почему так. В функции "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.
Удачи!
- Влад