2010-11-07 50 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

相关问题