В качестве альтернативы, используйте boost::program_options
, это идеально подходит для того, что вам нужно!
РЕДАКТИРОВАТЬ: чуть более подробно, program_options имеет метод для анализа файла конфигурации, такого как ваш, и при настройке program_options, вы можете передать переменную для хранения значения из файла конфигурации. Взгляните на их простой пример, он станет совершенно ясным ...
Другой вариант - хранить ключи вmap со значением по умолчанию 0, а затем, когда вы анализируете свой файл, установите ключ для значения, которое вы читаете из файла ...
РЕДАКТИРОВАТЬ:
с помощью параметров программы (это непроверенный код, пожалуйста, попробуйте обратиться к документации и исправить при необходимости!)
int AutoStart;
int AutLogHistory;
int AutoScan;
int AutoMount;
int AutoOpen;
int LastConnectedSvr;
po::options_description desc("Allowed options");
desc.add_options()
("help", "produce help message")
("AutoStart", po::value<int>(&AutoStart)->default_value(0),"AutoStart")
("AutLogHistory", po::value<int>(&AutLogHistory)->default_value(0),"AutLogHistory")
("AutoScan", po::value<int>(&AutoScan)->default_value(0),"AutoScan")
("AutoMount", po::value<int>(&AutoMount)->default_value(0),"AutoMount")
("AutoOpen", po::value<int>(&AutoOpen)->default_value(0),"AutoOpen")
("LastConnectedSvr", po::value<int>(&LastConnectedSvr)->default_value(0),"LastConnectedSvr")
;
std::ifstream config("NDS.config");
po::parse_command_line(config, desc, true);
Когда этот лот выполняется, различные целые числа будут иметь значения из файла (или по умолчанию 0).
Отличительной особенностью этого подхода является то, что в ваших конфигурационных файлах могут быть разные типы , и до тех пор, пока они отформатированы как файлы INI, это будет работать.
Другой подход с использованием std :: map, ну @ Moo-Juice уже добавил рабочий код ...