STLSoft 's 1.10 alpha contiene un platformstl::properties_file
clase. Se puede utilizar para leer desde un archivo:
using platformstl::properties_file;
properties_file properties("stuff.properties");
properties_file::value_type value = properties["name"];
o desde la memoria:
properties_file properties(
"name0=value1\n name1 value1 \n name\\ 2 : value\\ 2 ",
properties_file::contents);
properties_file::value_type value0 = properties["name0"];
properties_file::value_type value1 = properties["name1"];
properties_file::value_type value2 = properties["name 2"];
Parece que la última versión 1.10 tiene un montón de unidad de pruebas exhaustivas, y que se ha realizado la actualización del clase para manejar todas las reglas y ejemplos dados en el Java documentation.
El único RUB aparente es que la value_type
es una instancia de stlsoft::basic_string_view
(descrito en this Dr Dobb's article), que es algo similar a std::string
, pero en realidad no poseen su memoria. Presumiblemente hacen esto para evitar asignaciones innecesarias, presumiblemente por razones de rendimiento, que es algo que el diseño STLSoft tiene en gran estima. Pero esto significa que no se puede simplemente escribir
std::string value0 = properties["name0"];
Puede, sin embargo, hacer esto:
std::string value0 = properties["name0"].c_str();
y esto:
std::cout << properties["name0"];
No estoy seguro estoy de acuerdo con esta decisión de diseño, ya que es probable que las propiedades de lectura, desde el archivo o desde la memoria, necesiten el último ciclo absoluto. Creo que deberían cambiarlo para usar std::string
de forma predeterminada, y luego usar la "vista de cadena" si se requiere explícitamente.
Aparte de eso, parece que la clase properties_file
hace el truco.
self e xplanatory en realidad, ¿qué es un "archivo de propiedades"? –
Bueno, supongo que el formato de archivo de propiedades, un elemento básico de Java, no es tan conocido fuera del mundo de Java, lo que explica en parte por qué no puedo encontrar uno. Consulte http://en.wikipedia.org/wiki/.properties (no tengo suficiente reputación para agregar esto a la pregunta). – JamieH
Lo he agregado para usted - Espero haberme parafraseado correctamente. –