Для следующего кода, возможно ли вывести результат в строку вместо 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));
Потоки выходных строк — это функция C ++, которая ведет себя аналогично потокам выходных файлов в том смысле, что они оба наследуются от std::ostream
Это означает, что в обоих случаях вы можете использовать в основном одни и те же функции. Однако строковые потоки работают с строкой, а не с файлом.
Для вас это означает, что все, что вам нужно сделать (так как вы не использовали wofstream
-специфические функции) это изменение типа ofs
в поток строк:
#include <sstream>
std::wostringstream oss;
Теперь я не мог получить материал для локали (я еще не использовал их), но комментирование их действительно дало правильные результаты (увидеть этот тест). Как вы можете видеть, вы можете получить доступ к строке через поток строк str()
функция.
Других решений пока нет …