std::ofstream ofs;
ofs << "Hello, world!" << endl;
ディスクに書き込む前に、の内容ofs
を変更したいですか?"Hello, money!"
どうすれば実装できますか?
std::ofstream ofs;
ofs << "Hello, world!" << endl;
ディスクに書き込む前に、の内容ofs
を変更したいですか?"Hello, money!"
どうすれば実装できますか?
std::endl
IOマニピュレータはストリームバッファのコンテンツをフラッシュするため、後でコンテンツがフラッシュされる前にストリームを処理する場合は、これをに変更する必要があります'\n'
。
また、実際にこれを実行したいのは、フォーマット後に書き込まれる文字列を操作する必要があるためであると想定して、フォーマットされstd::ostringstream
た機能を活用できることを知っておく必要があります。ストリーミングして結果を文字列に収集し、それを操作して通常はファイルに書き込むことができます。
これが明らかな情報であり、ユースケースがより複雑な場合は、@ MattsPeterssonが指摘しているように、独自のストリームバッファを作成する必要があります。
編集:から派生したクラスを作成する必要がありますfilebuf
(この説明の目的のために、それを使用して、上記よりも正確なmyfilebuf
を構築します。ostream
myfilebuf
を実装しsputbackc
、ステートマシンを使用して「Hello、World!」を識別し、「Hello、Money!」に置き換えます。これは、2番目のレイヤーがどれであるかがわかるまでバッファリングすることを意味します。