Еще один простой способ - использовать File.AppendText
, он добавляет кодированный текст UTF-8 к существующему файлу или к новому файлу, если указанный файл не существует и возвращает System.IO.StreamWriter
using (System.IO.StreamWriter sw = System.IO.File.AppendText(logFilePath + "log.txt"))
{
sw.WriteLine("this is a log");
}
Если Вы хотите JSON в C++, нет никакой потребности в Повышении. С этим библиотека можно получить JSON как тип данных первого класса, который ведет себя как контейнер STL.
// Create JSON on the fly.
json j2 = {
{"pi", 3.141},
{"happy", true},
{"name", "Niels"},
{"nothing", nullptr},
{"answer", {
{"everything", 42}
}},
{"list", {1, 0, 2}},
{"object", {
{"currency", "USD"},
{"value", 42.99}
}}
};
// Or treat is as an STL container; create an array using push_back
json j;
j.push_back("foo");
j.push_back(1);
j.push_back(true);
// also use emplace_back
j.emplace_back(1.78);
// iterate the array
for (json::iterator it = j.begin(); it != j.end(); ++it) {
std::cout << *it << '\n';
}
При запуске дерева свойства для представления структуры JSON столкнулась с аналогичными проблемами, которые я не решил. Также отметим, что из документации дерево недвижимости не полностью поддерживает информацию о типе:
Значения JSON сопоставляются на узлы, содержащие значение. Однако вся информация типа теряется; Числа, а также литералы «NULL», «TRUE» и «FALSE» просто отображаются с их струнной формой.
После изучения этого я перешел на более полную реализацию JSON JSON Spirit . Эта библиотека использует Boost Spirit для реализации Грамматики JSON и полностью поддерживает JSON, включая массивы.
Я предлагаю вам использовать альтернативную реализацию C ++ JSON.
Что вам нужно сделать, это веселье. Это из памяти, но что-то вроде этого работает для меня.
boost::property_tree::ptree root;
boost::property_tree::ptree child1;
boost::property_tree::ptree child2;
// .. fill in children here with what you want
// ...
ptree.push_back( std::make_pair("", child1 ) );
ptree.push_back( std::make_pair("", child2 ) );
Но посмотрите несколько ошибок в разборе и письме JSON. Некоторые из которых я отправил отчеты об ошибках для - без ответа: (
Отредактируйте: чтобы решить беспокойство об этом, неверно, как {"": "", "": "}
Это только происходит, когда Массив - это корневой элемент. Сценарист POREE PTREE лечит все элементы корневых элементов как объекты - никогда не используются массивы или значения. Это вызвано следующей строкой в Boost / Property_tree / Detail / json_parser_writer.hpp
else if (indent > 0 && pt.count(Str()) == pt.size())
Избавиться от "Отступ> 0 && "позволит ему правильно написать массивы.
Если вам не нравится, сколько пространства производится, вы можете использовать патч, который я предоставил здесь