原因:
除非知道当前没有设置基标志,否则 ios::setf(_IFlags) 不应和 ios::dec、ios::oct 或 ios::hex 的标志值一起使用。格式化的输入/输出函数和运算符假定只设置了一个基。
解决办法:
1.
先取消ios::dec
cout.unsetf(ios::dec);
cout.setf(ios::hex);
2.
改用 ios_base。例如,setf( ios_base::oct, ios_base::basefield ) 清除所有基信息并将基设置成八进制。(注意中间用逗号和顺序)
cout.setf(ios_base::hex,ios_base::basefield);
注意:此处用到setf第二种原型fmtflags setf(fmtflags, fmtflags)
第二原型包含两个参数,第一个参数和第一原型里的参数一样,第二个参数指出要清除第一参数中的哪些位,也就是说,在第二原型中,第一个参数指出要设置哪些位,第二个参数指出要清除哪些位。
参考文献:1.
https://blog.csdn.net/sssxueren/article/details/233352
版权声明:本文为m0_52907626原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。