【发布时间】:2014-05-21 12:57:59
【问题描述】:
我有以下代码 sn-ps 来打印整数的十六进制值,
int i=10;
cout<<hex<<i<<endl;
在控制台上打印十六进制值 10 a,
但是在下一行我需要打印另一个变量的十进制值,比如
int j=11;
cout<<j<<endl;
但它也会打印十六进制值 11,b,如果我使用 cout<<dec<<j<<endl;,它会打印十进制值。
我还注意到,如果之前使用过cout<<hex,所有cout 都会打印变量的十六进制值。
所以我的问题是正常行为吗?如果我之前使用过一次<<hex,是否需要使用<<dec?
【问题讨论】:
-
是的,如果你想切换它,我相信你必须做
<<dec或<<hex。如果我没记错的话,你正在做的是设置一个标志以十六进制或十进制打印,它会保留该标志,直到它被设置为其他东西。 -
是的,您必须将其重置为
std::dec(技术上清除std::ios_base::basefield位掩码,该位掩码仍将设置std::ios_base::hex的位。