問題タブ [wostringstream]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - std::wostringstreamへのCStringWの挿入に関する問題
MFCプログラムをMBCSからUnicodeに変換する作業をしています。挿入演算子<<は、CStringAとCStringWインスタンスでは動作が異なることがわかりました。
これは「Hello\nWorld \ n」と表示されると思いますが、代わりに「Hello \ n14,5E6、B38\n」と表示されます。つまり、データではなくw_sデータのアドレスを出力します。
w_oss << w_sにデバッグすると、const wchar_t *を挿入するためのオーバーロードではなく、constvoid*を挿入するためのオーバーロードが選択されていることがわかります。charバージョンでは正しく機能しています。ケース(LPCTSTR)または(const wchar_t *)を明示的に適用すると、wchar_tバージョンで正しく機能します。
wchar_tバージョンがcharバージョンとは異なる動作をする理由はありますか?
c++ - .str() を呼び出す前に std::wostringstream の長さを知ることは可能ですか?
私はstd::wostringstreamとそれを適切に使用する方法を調べています。構築された文字列の長さを事前に知る方法があるかどうか疑問に思っていましたか? MSDN とhttp://en.cppreference.com/w/で情報を検索してみましたが、最後にグーグルで検索しましたが、探しているものが見つかりませんでした。
たとえば、wostringstreamの参照を関数に渡す場合、関数は、ストリームが空かどうか、および.str()を呼び出してコピーを行わずにどれくらいの長さかを知ることができますか?
c++ - Visual C++ 2013 のメモリ リーク wostringstream、imbue、および locale ファセット
前回の質問に関連して、std::string でメモリ リークが発生すると想定していましたが、詳しく調べてみると、奇妙な結果が得られました。さぁ、始めよう:
グローバルがあると考えてください
WriteToLog() 関数には、次のコードがあります。
これは独自のものを利用します:
ログ イベントは時折発生するため、大量のメモリ リークが発生します (最初の 5MB/500 ハンドルから、数分で 200MB/300,000 ハンドルにジャンプします)。
以前は、std::string に関するリークであると想定していましたが、Visual Studio Profiler を使用して、すべてのリークが GetUtf8Locale() によって引き起こされていることを示しています。
誰でもこの問題で私を助けることができますか?