2010-11-07 36 views
10

是否有可能讓ostream輸出帶有字符A-F而不是a-f的十六進制數字?如何使用A-F(而非a-f)流式傳輸十六進制數字?

int x = 0xABC; 
std::cout << std::hex << x << std::endl; 

此輸出abc而我寧願看到ABC

+2

請問這個問題的解決者是否可以向我解釋什麼是這樣的犯罪 題?事實上,我已經打開MSDN「十六進制」,希望找到答案,但我沒有。那麼這個問題有什麼問題? – 2010-11-07 09:39:52

+0

不知道,但這是對付它的贊成票。我喜歡這樣做,因爲它是公平的(特別是對那些有真正問題的人來說 - 這意味着所有開發人員的水平,而不僅僅是像我這樣的討厭的知道所有人),但主要是因爲它困擾了驅動者 - downvoters誰甚至不願意留下評論,以便改善問題。當然,他們很可能會在報復中降低我的回答,但它不像我缺乏代表:-) – paxdiablo 2010-11-07 09:50:42

+0

@paxdiablo:我對報復性降薪的感覺是,任何可能捲入這種胡言亂語的人都不到我的代表的一半,所以我會贏得那一場。由於我的代表不到一半,所以可以超過兩倍... – 2010-11-07 10:38:56

回答

12

是的,你可以使用std::uppercase,這會影響浮點和十六進制整數輸出:

std::cout << std::hex << std::uppercase << x << std::endl; 

如下面的完整的程序:

#include <iostream> 
#include <iomanip> 

int main (void) { 
    int x = 314159; 
    std::cout << std::hex << x << " " << std::uppercase << x << std::endl; 
    return 0; 
} 

,輸出:

4cb2f 4CB2F 
+1

這個修飾符只會影響十六進制數字,還是會影響字符串? – 2010-11-07 10:03:40

+2

十六進制數和指數用科學計數法表示。如果你想做字符串,請參閱http://stackoverflow.com/questions/735204/convert-a-string-in-c-to-upper-case – paxdiablo 2010-11-07 10:10:13

相關問題