输出到字符串而不是wofstream

时间:2012-09-06 02:30:29

标签: c++ string wstring 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));

1 个答案:

答案 0 :(得分:2)

输出字符串流是一种C ++功能,其行为类似于输出文件流,因为它们都从std::ostream继承,这意味着您可以在两者中使用大部分相同的功能。但是,字符串流对字符串而不是文件进行操作。

这对您来说意味着您需要做的就是(因为您没有使用任何wofstream特定的函数)将ofs的类型更改为字符串流:

#include <sstream>
std::wostringstream oss;

现在我无法构建语言环境(我还没有使用过那些),但是对它们进行评论确实产生了正确的结果(see this test)。如您所见,您可以通过字符串流的str()函数访问字符串。