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これが意味することは、(特定の関数を使用していないため)必要なのは、タイプをofs文字列ストリームに変更することだけです。

#include <sstream>
std::wostringstream oss;

今、私はロケールのものを構築することができませんでした(私はまだそれらを使用していません)が、それらにコメントすることは確かに正しい結果を生み出しました(このテストを参照してください)。str()ご覧のとおり、文字列ストリームの関数を介して文字列にアクセスできます。

于 2012-09-06T02:58:12.580 に答える