在setiosflags函数内部使用十六进制标志

问题描述 投票:2回答:2
int a=60;
cout<<setiosflags(ios::hex|ios::showbase|ios::uppercase);
cout<<a<<endl;

上面的代码不起作用,但是如果我使用

cout<<hex

然后是>>

cout<<setiosflags(ios::showbase|ios::uppercase)

然后它正在工作

为什么?以及我如何知道可以在setiosflags()中使用哪一个?

int a = 60; cout << []

c++ iomanip
2个回答
1
投票
您需要在呼叫resetiosflags之前先呼叫resetiosflags。这样做的原因是setiosflags只是将这些标志附加到流中,就像调用setiosflags(ios::hex|ios::showbase|ios::uppercase)一样,并且在流中给出了冲突的标志。使用

setf


0
投票
对于第一个版本,您首先必须清除a,否则优先级:
© www.soinside.com 2019 - 2024. All rights reserved.