printf Hex的额外数字

时间:2010-09-13 21:12:57

标签: c++

使用printf时,为什么在Hex数字字符串后面会得到额外的数字?

cout << printf("%06X ", 0xABCDEF);

产生:ABCDEF 7

那么7来自哪里以及如何摆脱它呢?

4 个答案:

答案 0 :(得分:12)

你需要使用cout或printf,而不是两者。

printf("%06X ", 0xABCDEF);

或者

cout << hex << 0xABCDEF;

当你同时执行这两项操作时,cout会打印printf函数的结果,即打印的字符数(六个字符和一个空格)。

答案 1 :(得分:7)

您正在将printf操作的结果传递给cout。

一般来说,你使用printf或cout。

printf("%06X",0xABCDEF); //will do what you want in a C-like way

std::cout << std::hex << 0xABCDEF; //is the C++ iostream way

答案 2 :(得分:4)

尝试

cout << hex << 0xABCDEF;

'7'是printf()函数的返回值。它由cout打印,其中hex字符串由printf()打印。

答案 3 :(得分:3)

printf无法与cout一起使用。 printf格式化您的值并打印它,它不会返回格式化的值。

7来自printf返回该值的事实,该值是写入的字符总数。然后将此7发送到cout,然后将其打印出来。

如果您想使用cout打印带格式的文本,最简单的方法是使用Boost.Format,但iostreams库也通过manipulators为此提供功能。