Как уже отмечали другие, вероятно, будет меньше работы, чтобы использовать существующую библиотеку синтаксического анализатора файла конфигурации, чем заново изобретать колесо.
Например, если вы решите использовать библиотеку Config4Cpp (которую я поддерживаю), то синтаксис вашего файла конфигурации будет немного другим (заключите двойные кавычки вокруг значений и завершите операторы присваивания точкой с запятой) как показано в примере ниже:
# File: someFile.cfg
url = "http://mysite.com";
file = "main.exe";
true_false = "true";
Следующая программа анализирует указанный выше файл конфигурации, копирует нужные значения в переменные и печатает их:
#include <config4cpp/Configuration.h>
#include <iostream>
using namespace config4cpp;
using namespace std;
int main(int argc, char ** argv)
{
Configuration * cfg = Configuration::create();
const char * scope = "";
const char * configFile = "someFile.cfg";
const char * url;
const char * file;
bool true_false;
try {
cfg->parse(configFile);
url = cfg->lookupString(scope, "url");
file = cfg->lookupString(scope, "file");
true_false = cfg->lookupBoolean(scope, "true_false");
} catch(const ConfigurationException & ex) {
cerr << ex.c_str() << endl;
cfg->destroy();
return 1;
}
cout << "url=" << url << "; file=" << file
<< "; true_false=" << true_false
<< endl;
cfg->destroy();
return 0;
}
Веб-сайт Config4Cpp предоставляет исчерпывающую документацию, но чтение только глав 2 и 3 «Руководства по началу работы» должно быть более чем достаточным для ваших нужд.