У меня есть этот код, который работает нормально
#include <iostream>
#include <set>
#include <sstream>
int main()
{
std::set<std::string> a;
a.insert("foo");
a.insert("bar");
a.insert("zoo");
a.insert("should");
a.insert("work");
std::stringstream b;
std::set<std::string>::iterator it;
for (it = a.begin(); it != a.end(); it++)
{
b << " " << *it <<"," <<"\n";
}
std::string aaa = b.str();
std::cout <<aaa;
}
Вывод в командной строке:
bar, //new line after ","
foo, //new line after ","
should,
work,
zoo,
Если я попытаюсь записать одну и ту же строку aaa в файл, я ожидаю, что один и тот же вывод будет напечатан в файле, т.е. каждая строка после "," в новой строке, скорее я получаю вывод в своем файле следующим образом (в одной строке с \ п):
" bar,\n foo,\n should,\n work,\n zoo,\n"
Кто-нибудь может мне с этим помочь?
Дополнительная информация о записи строки в файл:
Вот как я записываю в файл:
boost::property_tree::ptree pt1;
pt1.put( "Output", aaa );
boost::property_tree::write_json( "result.json", pt1 );
Это запишет файл JSON, вывод приведенного выше кода в (Windows - NotePad/NotePad++) выглядит следующим образом:
{
"Output": " bar,\n foo,\n should,\n work,\n zoo,\n"
}
\n
, если откроете его в редакторе. - person Daniel H   schedule 06.02.2017\r\n
) и linux(\n
) поддерживают разные типы окончания строки. Иметь ввиду. - person jack jay   schedule 06.02.2017\n
, хотя было правильно указано, что это проблема JSON и ожидаемое поведение. Файловые операции не заботятся о концах строк в C++ (при условии, что вы используете стандартные функции). Это зависит от логики приложения. Notepad++ не будет отображать\r\n
и\n
как одно и то же, потому что это не так. И, как уже говорилось ранее, это вовсе не проблема с окончанием строки. - person Qix - MONICA WAS MISTREATED   schedule 07.02.2017