4

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

例如,我有一行:

std::cout << "_Agent [" << target << "] 仍然在 " << ((target->currWorker)->getEntities().size()) << " 实体的 worker[" <<目标->currWorker << "]" << std::endl;

这将打印:

_Agent [0x2c6d530] 仍然在worker[0x2c520f0] 的0x1个实体中

笔记:

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

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

任何提示?

谢谢

4

2 回答 2

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;

以十进制形式打印。

于 2013-04-09T03:47:28.953 回答
4

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

您可以在此处了解有关 c++ io 操纵器标志的更多信息

于 2013-04-09T03:54:40.303 回答