【发布时间】:2020-02-22 20:21:56
【问题描述】:
例如,我想要一个流操纵器,我可以将 uint8_t (unsigned char) 传递给并使其输出(例如):
00 或 0f 或 a6。
我知道可以使用不带参数的流操纵器:
std::ostream &hex_format(std::ostream &out)
{
out << std::hex << std::setfill('0') << std::setw(2);
return out;
}
uint8_t x {15};
std::cout << hex_format << static_cast<int>(x); // should produce "0f"
但是我怎样才能创建一个接受参数的操纵器呢?比如:
std::ostream &hex_format(std::ostream &out, uint8_t x)
{
out << std::hex << std::setfill('0') << std::setw(2)
<< static_cast<int>(x);
return out;
}
uint8_t x {15};
std::cout << hex_format(x); // (want to) produce "0f"
【问题讨论】:
-
使它成为一个带有构造函数的类,并存储你的参数;加上重载的
operator<<使用它们。你可以看看std::setfill和std::setw是如何实现的——它们是接受参数的操纵器。