c++输出格式控制符问题
比如用cout.setf(ios::showbase);和cout<<setiosflags(ios::showbase)在本质上有什么区别。cout.setf(ios:...
比如用cout.setf(ios::showbase);和cout<<setiosflags(ios::showbase) 在本质上有什么区别。cout.setf(ios::showbase) 是通过流对象实现,那么后者是怎样实现的。我想知道第二个人的本质,个人猜想是不是重载了
展开
2个回答
展开全部
没有本质区别,cout<<setiosflags(ios::showbase)实际调用了setf
看下stl代码就清楚了:
inline _Setiosflags
setiosflags(ios_base::fmtflags __mask)
{ return { __mask }; }
template<typename _CharT, typename _Traits>
inline basic_istream<_CharT, _Traits>&
operator>>(basic_istream<_CharT, _Traits>& __is, _Setiosflags __f)
{
__is.setf(__f._M_mask);
return __is;
}
...
展开全部
就是重载了operator<<(ostream&, <setiosflags()的类型>)
可能我对<<两遍的类型描述地不很准确,这样可以查看<<两边的类型:
#include <iostream>
#include <iomanip>
#include <typeinfo>
#include <cstdlib>
using namespace std;
int main()
{
cout<<typeid(cout).name()<<endl;
cout<<typeid(setiosflags(ios::showbase)).name()<<endl;
system("pause");
return 0;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询