这是针对学校的练习,因此请仅提供提示,不要提供完整示例;-)
我有自己的机械手:
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&)
有用的……你有提示/例子吗?
你们已经帮了我很多了!我仍然不明白的是,通过 abasic_ios
并回馈的动机ios_base
(因为建议在我必须解决的练习中这样做......)。使用它的可能场景是什么???