0

对于以下代码,是否可以将结果输出到字符串而不是 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));
4

1 回答 1

2

输出字符串流是一个 C++ 特性,其行为类似于输出文件流,因为它们都继承自std::ostream,这意味着您可以在两者中使用几乎相同的函数。但是,字符串流对字符串而不是文件进行操作。

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

#include <sstream>
std::wostringstream oss;

现在我无法获得语言环境的东西(我还没有使用过那些),但是评论它们确实产生了正确的结果(见这个测试)。如您所见,您可以通过字符串流的str()函数访问字符串。

于 2012-09-06T02:58:12.580 回答