2013-04-09 115 views
3

任何人都可以想到,簡單的std::cout可能會打印一個十六進制格式的值,當它應該格式化一個小數(如整數)?cout打印十六進制而不是十進制

例如,我有一個路線爲:

的std :: COUT < < 「_Agent [」 < <目標< < 「]仍然是 之間」 < < ((靶> currWorker ) - > getEntities()大小()) < < 「的實體的工人 [」 < <靶> currWorker < < 「]」 < < std :: endl;

這將打印:

_Agent [0x2c6d530]仍是中工人的爲0x1實體[0x2c520f0]

注:

1-說出來放是有時十進制和一些十六進制時間

2 - 即使我將((target->currWorker)->getEntities().size())更改爲(int)((target->currWorker)->getEntities().size())

任何提示?

感謝

+1

你用'的std ::法院<<性病::十六進制...'在你的 「真實」 代碼的任何地方? – Chad 2013-04-09 03:43:50

+0

什麼是「目標」?看來這是'target'的地址。所有的十六進制看起來像地址。 – gongzhitaao 2013-04-09 03:44:37

回答

12

你可能已經設置的std ::法院打印十六進制在你的代碼的情況下之前卻忘了復位。例如:

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

所以你必須做類似下面的

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

十進制形式打印。

3

嘗試找到這樣的線std::cout << std::showbase << std::hex;某些地方在您的代碼中,它將std::cout設置爲以十六進制打印輸出,使用0x基本指示符前綴。 重置它以顯示十進制在當前cout之前添加此行std::cout<<std::dec

您可以瞭解更多關於C++的IO操縱標誌here