C++ iostream マニピュレーターを実装する必要があります。あちこちで読むと、人々は2つの方法を使用しているようです
を使用
ios_base::xalloc
してios_base::iword
以下の例のように、iostream から派生したクラスを実装します。
私は 2 番目の方法が好きですが、おそらく最初の方法と比較して、私には見えない、または理解できないという短所があります。
// Example of point 2
struct mystream : public iostream
{
ostream& o_;
mystream(ostream& o) : o_(o) {}
ostream& operator << (int a) {
// do something with o and a
o << "<A>" << a << "</A>";
return *this;
}
};
ostream mymanipulator(ostream& out) {
return mystream(out);
}
この記事Custom manipulator for C++ iostreamで方法 2 の非常に優れた実装を見つけました。
xalloc and iword
カスタムストリームをある時点で使用するために、カスタム内部状態を保存するために使用されているように見えます。