2013-04-09 165 views
3

任何人都可以想到,简单的std::cout可能会打印一个十六进制格式的值,当它应该格式化一个小数(如整数)?cout打印十六进制而不是十进制

例如,我有一个路线为:

的std :: COUT < < “_Agent [” < <目标< < “]仍然是 之间” < < ((靶> currWorker ) - > getEntities()大小()) < < “的实体的工人 [” < <靶> currWorker < < “]” < < std :: endl;

这将打印:

_Agent [0x2c6d530]仍是中工人的为0x1实体[0x2c520f0]

注:

1-说出来放是有时十进制和一些十六进制时间

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

任何提示?

感谢

+1

你用'的std ::法院<<性病::十六进制...'在你的 “真实” 代码的任何地方? – Chad 2013-04-09 03:43:50

+0

什么是“目标”?看来这是'target'的地址。所有的十六进制看起来像地址。 – gongzhitaao 2013-04-09 03:44:37

回答

12

你可能已经设置的std ::法院打印十六进制在你的代码的情况下之前却忘了复位。例如:

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

所以你必须做类似下面的

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

十进制形式打印。

3

尝试找到这样的线std::cout << std::showbase << std::hex;某些地方在您的代码中,它将std::cout设置为以十六进制打印输出,使用0x基本指示符前缀。 重置它以显示十进制在当前cout之前添加此行std::cout<<std::dec

您可以了解更多关于C++的IO操纵标志here