6

これは学校向けの演習なので、完全な例ではなく、ヒントだけを提供してください ;-)

私は自分のマニピュレータを持っています:

template<typename T, typename Tr=char_traits<T> >
ios_base& toggle(basic_ios<T,Tr>& io)
{
    if(io.flags() & ios::scientific)
    { io.unsetf(ios::scientific); io.flags(ios::fixed); }
    else { io.unsetf(ios::fixed); io.flags(ios::scientific); }
    return io;
 }

フォームでマニピュレータを書かなければならないので、私はこれを書きましたios_base& my_manip(basic_ios&)

このように使用すると(戻り値を使用せずに):

toggle(cout);

...それはうまくいきます。しかし、そのように使用すると:

toggle(cout) << 54444.6456555 << endl;

これは機能しません (後述のように std::ios_base には operator<<() がないため)。

一般的に、何ios_base& my_manip(basic_ios&)が役立つのかわかりません...ヒント/例はありますか?


あなたたちはすでに私をたくさん助けてくれました!私がまだ理解していないのは、合格しbasic_iosて恩返しをする動機ios_baseです(私が解決しなければならない演習でそれを行うことが提案されているため...)。これを使用する可能性のあるシナリオは何ですか???

4

2 に答える 2