Tengo un archivo ini que contiene algunos valores de la muestra como:Cómo analizar el archivo INI con Boost
[Section1]
Value1 = 10
Value2 = a_text_string
que estoy tratando de cargar estos valores e imprimirlas en mi aplicación con Boost pero no lo hacen entender cómo hacer esto en C++.
He buscado en este foro para encontrar algunos ejemplos (siempre usé C y por eso no soy muy bueno en C++) pero solo encontré ejemplos sobre cómo leer valores de un archivo al mismo tiempo.
Necesito cargar un solo valor cuando quiero, como string = Section1.Value2
porque no necesito leer todos los valores, pero solo algunos de ellos.
Me gustaría cargar valores únicos y almacenarlos en variables para usarlos cuando quiera en mi aplicación.
¿Es posible hacer esto con Boost?
Por el momento, estoy usando este código:
#include <iostream>
#include <string>
#include <set>
#include <sstream>
#include <exception>
#include <fstream>
#include <boost/config.hpp>
#include <boost/program_options/detail/config_file.hpp>
#include <boost/program_options/parsers.hpp>
namespace pod = boost::program_options::detail;
int main()
{
std::ifstream s("file.ini");
if(!s)
{
std::cerr<<"error"<<std::endl;
return 1;
}
std::set<std::string> options;
options.insert("Test.a");
options.insert("Test.b");
options.insert("Test.c");
for (boost::program_options::detail::config_file_iterator i(s, options), e ; i != e; ++i)
std::cout << i->value[0] << std::endl;
}
Pero esto acaba de leer todos los valores en un bucle for
; por el contrario, solo quiero leer valores individuales cuando quiero y no necesito insertar valores en el archivo, porque ya está escrito con todos los valores que necesito en mi programa.
¡Excelente respuesta! Es lo que necesito para mi aplicación. Realmente muchas gracias! –
¿Qué sucede si no conozco cierto conjunto de claves disponibles, pero aún quiero obtener una lista completa de pares clave = valor? Es decir. ¿Cómo reescribirías tu programa sin usar las constantes "Section1.Value1" y "Section1.Value2"? – javapowered
upd: he encontrado esta pregunta http://stackoverflow.com/questions/11065938/boost-program-options-get-all-entries-in-section según que no sea posible sin escribir un código personalizado ... – javapowered