CFileManagerOStream
から継承するカスタム ストリームがあります。std::ostream
ネットワーク ストリーム クラスから Unicode UTF16 または UTF32 文字列を取得し、CTcpStream
それらを UTF8 文字列としてディスクに格納します。文字列はメモリ内で UTF8 に変換するには大きすぎる (数テラバイトになる可能性がある) 可能性があるため、このジョブには C++ ストリーム マニピュレータを実装する必要があると思います。私が見つけたすべてのマニピュレーターの例は、文字列全体を取得して処理しますが、メモリ要件が低いため、私の場合はそうではありません。私はすべての Unicode 変換コードの準備ができています。私が解決しようとしている問題は、できるだけ少ない内部メモリで変換を行うことです。
このようなマニピュレータを使用したいと思っていました。
CFileManagerOStream outFile("MultipleUtf8Strings.dat"); // Custom std::ostream
...
#ifdef _WINDOWS
CTcpStreamUtf16 largeBlobUtf16Stream;
...
outFile << ToUTF8FromUtf16 << largeBlobUtf16Stream;
#else
CTcpStreamUtf32 largeBlobUtf32Stream;
...
outFile << ToUTF8FromUtf32 << largeBlobUtf32Stream;
#endif
これは可能ですか、それとも間違ってアプローチしていますか?