Ответ 1
STLSoft 1.10 alpha содержит platformstl::properties_file
класс. Его можно использовать для чтения из файла:
using platformstl::properties_file;
properties_file properties("stuff.properties");
properties_file::value_type value = properties["name"];
или из памяти:
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"];
Похоже, что в последнем выпуске 1.10 есть куча всеобъемлющих модульных тестов и что они обновили класс для обработки всех правил и примеров, приведенных в Документация по Java.
Единственным очевидным тестом является то, что value_type
является экземпляром stlsoft::basic_string_view
(описано в эта статья д-ра Добба), которая несколько похожа на std::string
, но на самом деле не имеет собственной памяти. Предположительно, они делают это, чтобы избежать ненужных ассигнований, предположительно по соображениям производительности, и это то, что дорого стоит конструкции STLSoft. Но это означает, что вы не можете просто написать
std::string value0 = properties["name0"];
Вы можете, однако, сделать это:
std::string value0 = properties["name0"].c_str();
и это:
std::cout << properties["name0"];
Я не уверен, что согласен с этим дизайнерским решением, поскольку, насколько вероятно, что свойства чтения - из файла или из памяти - нуждаются в абсолютном последнем цикле. Я думаю, что они должны поменять его на использование std::string
по умолчанию, а затем использовать "строковое представление", если это явно требуется.
Кроме того, класс properties_file
выглядит как трюк.