inpfile>>ch;
if(ch<16) outfile<<"0×0"<<std::hex<<setprecision(2)<<(int)ch<<" ";
std::hex<<setprecision(2)
是什么意思?
答案 0 :(得分:2)
iostream
可以操作来实现所需的格式化 - 这可以通过乍看起来像输出预定义值来完成,如我们的主题代码行所示。< / p>
std::hex
在base16中显示以下整数值。
setprecision
设置显示以下浮动值的精度。
关于操纵者的更多信息,启动here
答案 1 :(得分:1)
std::hex<<setprecision(2)
是什么意思?
std::hex
和std::setprecision
都是所谓的操纵者。应用于流(通过输出它们),他们操纵流,通常是为了改变流的格式。特别是,std::hex
操纵流以使值以十六进制写入,std::setprecision(x)
操纵它以输出x
位数字。
(你可能已经知道的一个相当流行的操纵者是std::endl
。)
正如你所看到的,有些操纵者会接受参数,而那些不接受参数的操纵者。此外,大多数(原则上所有)操纵器都是粘性的,这意味着它们对流的操纵会持续到显式更改为止。 Here 是关于此主题的广泛讨论。
答案 2 :(得分:1)
这一行与:
相同char ch;
inpfile>>ch;
if(ch<16)
{
outfile << "0×0" // Prints "0x0" (Ox is the standard prefix for hex numbers)
/*outfile*/ << std::hex // Tells the stream to print the next number in hex format
/*outfile*/ << setprecision(2) // Does nothing. Presumably they were trying to indicate print min of 2 characters
/*outfile*/ << (int)ch // Covert you char to an integer (so the stream will print it in hex
/*outfile*/ << " "; // Add a space for good measure.
}
而不是setprecision(2)可能的意图是setw(2)&lt;&lt; setfill( '0')
答案 3 :(得分:0)
std::hex
将输出基数设置为十六进制。
setprecision
对此行没有影响,因为它仅影响浮点数。