I am trying to create a simple configuration file that looks like this
url = http://mysite.com
file = main.exe
true = 0
when the program runs, I would like it to load the configuration settings into the programs variables listed below.
string url, file;
bool true_false;
I have done some research and this link seemed to help (nucleon’s post) but I can’t seem to get it to work and it is too complicated to understand on my part. Is there a simple way of doing this? I can load the file using ifstream but that is as far as I can get on my own. Thanks!
In general, it’s easiest to parse such typical config files in two stages: first read the lines, and then parse those one by one.
In C++, lines can be read from a stream using
std::getline(). While by default it will read up to the next'\n'(which it will consume, but not return), you can pass it some other delimiter, too, which makes it a good candidate for reading up-to-some-char, like=in your example.For simplicity, the following presumes that the
=are not surrounded by whitespace. If you want to allow whitespaces at these positions, you will have to strategically placeis >> std::wsbefore reading the value and remove trailing whitespaces from the keys. However, IMO the little added flexibility in the syntax is not worth the hassle for a config file reader.(Adding error handling is left as an exercise to the reader.)