Como ler arquivo de configuração em C++
Para ler arquivo de configuração em C++ existe uma biblioteca chamada Boost Property Tree.
Basicamente essa biblioteca te disponibiliza uma estrutura de Chave e Valor, tanto para arquivos .INI quanto para .XML e .JSON.
Exemplo de Arquivo .INI
// process.ini
[database]
host=0.0.0.0
port=1234
[log]
path=/tmp
file=%process%_%timestamp%_%n%.log
size=1024
Como Funciona a Boost Property Tree
Simples como ler um arquivo usando fstream.
Exemplo
// criando uma variável do tipo property_tree
boost::property_tree::ptree tree;
// lendo um arquivo .ini
boost::property_tree::read_ini("process.ini", tree);
Como usar a Boost Property Tree
Nos links de referência abaixo tem o meu projeto no GitHub para iniciar o seu teste!.
// como recuperar um valor da estrutura
// como pode ver o acesso ao grupo e valor da chave devem ser separados por ponto
// esse exemplo mostra como recuperar o valor passando o grupo e chave host
std::string host = tree.get<std::string>("database.host");
/** Caso não seja configurado o valor no arquivo você pode atribuir um valor
* padrão passando no segundo parâmetro da função 'get'
**/
int port = tree.get("database.port", 1234);
A Boost::Property_Tree também possibilita a leitura de arquivos XML e JSON, para isso você deve usar as funcões read_xml/read_json.
Links de Referência
- Projeto de exemplo: https://github.com/fegomes/boost_property_tree
- Documentação Boost: http://www.boost.org/doc/libs/1_61_0/doc/html/property_tree.html
Tem alguma dúvida ou sugestão para o artigo! Deixe nos comentários!