Вывод в строку вместо wofstream

Для следующего кода, возможно ли вывести результат в строку вместо wofstream? Спасибо вам!

wstring w = L"test";
std::wofstream ofs("test.txt");
std::locale utf8_locale(std::locale(), new boost::archive::detail::utf8_codecvt_facet());
ofs.imbue(utf8_locale);
std::copy(w.begin(),w.end(),
std::ostream_iterator<wchar_t, wchar_t>(ofs));

0

Решение

Потоки выходных строк — это функция C ++, которая ведет себя аналогично потокам выходных файлов в том смысле, что они оба наследуются от std::ostreamЭто означает, что в обоих случаях вы можете использовать в основном одни и те же функции. Однако строковые потоки работают с строкой, а не с файлом.

Для вас это означает, что все, что вам нужно сделать (так как вы не использовали wofstream-специфические функции) это изменение типа ofs в поток строк:

#include <sstream>
std::wostringstream oss;

Теперь я не мог получить материал для локали (я еще не использовал их), но комментирование их действительно дало правильные результаты (увидеть этот тест). Как вы можете видеть, вы можете получить доступ к строке через поток строк str() функция.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]