cout打印十六进制而不是十进制

时间:2013-04-09 03:40:40

标签: c++

任何人都认为简单的std::cout可能会以十六进制格式打印一个值,因为它应该只格式化十进制(如整数)吗?

例如,我有一行:

  

std :: cout<< “_Agent [”<<目标<< “] 还是   在“<< ((target-> currWorker) - > getEntities()。size())<<”实体中   of worker [“<< target-> currWorker<<”]“<< std :: endl;

会打印:

  

_Agent [0x2c6d530]仍然属于 0x1 工作人员的实体[0x2c520f0]

注意:

1 - 所说的输出是十进制的,有时是十六进制

2-即使我将((target->currWorker)->getEntities().size())更改为(int)((target->currWorker)->getEntities().size())

,行为仍然存在

任何提示?

感谢

2 个答案:

答案 0 :(得分:16)

您可能已将std :: cout设置为在代码上下文中之前打印十六进制,但忘记重置。例如:

std::cout<<std::hex<<12;
/*blah blah blah*/
std::cout<<12; //this will print in hex form still

所以你必须这样做

std::cout<<std::dec<<12;

以十进制形式打印。

答案 1 :(得分:4)

尝试在代码中的某些位置找到类似std::cout << std::showbase << std::hex;的行,将std::cout设置为以十六进制打印输出0x基本指示符前缀。 要将其重置为显示十进制,请在当前cout之前添加此行std::cout<<std::dec

您可以了解有关c ++ io操纵器标志here

的更多信息