Я пытаюсь использовать ostringstream для построения строки, использующей стандартные окончания строки платформы (поэтому для меня это CRLF, так как я разрабатываю для Windows).Я попробовал следующий код:
std::ostringstream out;
out << "line1\nline2\n";
const char* result = out.str().c_str(); // In result end of lines are '\n' instead
// of the expected '\r\n'
Так как ostringstream по умолчанию открывается в текстовом режиме, я думал, что он выполнит преобразование конца строки (как в ofstream), но полученный буфер символов не содержит ожидаемогоКонец строк CRLF ....
Редактировать:
Для тех, кому интересно, зачем мне нужно окончание CRLF внутри: я копирую текст в буфер обмена Windows, и пользователь часто копирует этот контент в Блокноти без окончания CRLF конец строк теряется во время этой последней операции ....
Мое решение:
Наконец я решил использовать библиотеку наддува, чтобы заменить \ n на \ r \n:
boost::replace_all( str, "\n", "\r\n" );