任何人都认为简单的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())
任何提示?
感谢
答案 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
的更多信息