使用printf时,为什么在Hex数字字符串后面会得到额外的数字?
cout << printf("%06X ", 0xABCDEF);
产生:ABCDEF 7
那么7来自哪里以及如何摆脱它呢?
答案 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为此提供功能。