c++ STL映射迭代器输出十六进制值
c++ stl map iterators outputting values a hex
我有以下代码:
map<StatTypesEnum, ValueHandler*>::const_iterator itr;
for(itr=player1->Stats.begin(); itr!=player1->Stats.end(); itr++)
{
cout << "Stat: " << itr->first << " Value: " << (ValueHandler*)(itr->second)->getValue() << endl;
}
getValue()方法返回一个int值。如果我在迭代器外计算值,它将以base10十进制显示,但是当我使用迭代器返回值时(如上所述),它将以base16十六进制显示。
为了完整起见,下面一行显示为base10:
cout << player1->Stats[Power]->getValue() << endl;
我希望迭代器显示base10。
谢谢。
当你打印(ValueHandler*)(itr->second)->getValue()
时,你应该得到一个十六进制值,因为这就是指针的打印方式。您可能不应该将getValue()
的返回值转换为ValueHandler*
。您可能打算将itr->second
转换为该指针类型(尽管没有必要),但只是把括号搞错了。下面是cast itr->second
的样子:
((ValueHandler*) itr->second)->getValue()
你想要的可能是:
itr->second->getValue()
(ValueHandler*)(itr->second)->getValue()
是指针,而不是int
。您正在转换getValue
的返回值。
也许你想要((ValueHandler*)(itr->second))->getValue()
?这是多余的
相关文章:
- 字符数组到十六进制字符串的转换 - 意外输出
- 在视觉工作室中以十六进制进行位移位并通过 cout 输出
- 为什么将字符串输出到未命名的 std::ofstream 反而给了我一个十六进制数?
- 重载输出运算符给出十六进制数字而不是字符串
- 为什么打印字符串阵列输出十六进制
- 如何在C++中从十六进制字符串输出 Unicode 字符
- std::dec仍然将内存地址输出为十六进制
- 无法在C++中输出十六进制
- 十六进制字符到十进制,并将输出存储为字符
- 为什么此输出看起来不确定?(是十六进制文字的冲刺、printf 还是语法?
- 为什么 int -> 十六进制/oct/bin 的转换在输出中打印为纯十进制值?
- 使用十六进制保存输出会增加空格
- 为什么我必须将一个字节强制转换为无符号两次才能看到十六进制输出
- printf十六进制值输出似乎比应该的要大
- C++:十六进制到十进制的转换函数-没有得到正确的输出
- 读取十六进制文件会产生错误的输出(跳过一些十六进制值)
- C++输入字节和输出十六进制
- 试图输出命令行参数会产生一个看似随机的十六进制数
- 以十六进制表示法(0xABCDEF)将字节缓冲区的字节输出到控制台输出流
- 在c++中将十六进制输出转换为十进制