4

std::cout10進数(整数など)だけをフォーマットすることになっているときに、単純なものが16進数形式で値を出力する可能性があることに気付いた人はいますか?

たとえば、次のような行があります。

std::cout << "_Agent [" << target << "] はまだ " << ((target->currWorker)->getEntities().size()) << " worker[" << " エンティティの中にあるtarget->currWorker << "]" << std::endl;

印刷されます:

_Agent [0x2c6d530] はまだworker[0x2c520f0] の0x1エンティティの中にあります

ノート:

1-上記の出力は、10進数の場合もあれば16進数の場合もあります

((target->currWorker)->getEntities().size())2- に変えても挙動がおかしい(int)((target->currWorker)->getEntities().size())

ヒントはありますか?

ありがとう

4

2 に答える 2

16

コードのコンテキストで std::cout を事前に 16 進数を出力するように設定している可能性がありますが、リセットするのを忘れています。例えば:

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

したがって、次のようにする必要があります

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

10 進形式で印刷します。

于 2013-04-09T03:47:28.953 に答える
4

std::cout << std::showbase << std::hex;コードのどこかでこのような行を見つけてみてください。これは出力をベース インジケーター プレフィックスstd::cout付きの 16 進数で出力するように設定します。0x10 進数を表示するようにリセットするstd::cout<<std::decには、現在の cout の前にこの行を追加します。

C++ io マニピュレーター フラグの詳細については、こちらをご覧ください。

于 2013-04-09T03:54:40.303 に答える