cout.setf(ios::hex) 没效果问题的解决

原因:

除非知道当前没有设置基标志,否则 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

 2.https://bbs.csdn.net/topics/120020610

3.https://blog.csdn.net/baishuiniyaonulia/article/details/79144033?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522162199512916780366541257%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=162199512916780366541257&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~first_rank_v2~rank_v29-2-79144033.pc_search_result_cache&utm_term=setf&spm=1018.2226.3001.4187

你可能感兴趣的:(cout.setf(ios::hex) 没效果问题的解决)