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

cout print hex instead of decimal

本文关键字:十进制 打印 十六进制 Cout      更新时间:2023-10-16

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

例如,我有一行作为:

std:: cout & lt; & lt;"_Agent [" <<目标& lt; & lt;仍然是在"<<((目标-> currWorker) -> getentity () .size ()) & lt; & lt;"实体worker的变化[" <<目标——> currWorker & lt; & lt;"]"& lt; & lt;std:: endl;

将打印:

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

注意:

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

2-行为是相同的,即使我改变((target->currWorker)->getEntities().size())(int)((target->currWorker)->getEntities().size())

提示吗?

谢谢

您可能已经将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;

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

你可以在这里了解更多关于c++操作符标志的信息