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
выглядит так, как будто он делает свое дело.