C++ 用于无符号字符的自定义std::十六进制操纵器 请考虑以下事项: unsigned char a(65); unsigned char z(90); std::cout << std::hex << a << ", " << z <<std::endl;

C++ 用于无符号字符的自定义std::十六进制操纵器 请考虑以下事项: unsigned char a(65); unsigned char z(90); std::cout << std::hex << a << ", " << z <<std::endl;,c++,iostream,C++,Iostream,但期望的产出是: 41, 5a 为了实现这一点,我希望避免像这样转换值,比如: std::cout << std::hex << int(a) << ", " << int(z) <<std::endl; std::cout如果要将char打印为十六进制,则需要将其转换为整数: std::cout << std::hex << static_cast<int>('a'); std::cout

但期望的产出是:

41, 5a
为了实现这一点,我希望避免像这样转换值,比如:

std::cout << std::hex << int(a) << ", " << int(z) <<std::endl;

std::cout如果要将
char
打印为十六进制,则需要将其转换为整数:

 std::cout << std::hex << static_cast<int>('a'); 

std::cout如果要将
char
打印为十六进制,则需要将其转换为整数:

 std::cout << std::hex << static_cast<int>('a'); 

std::我不认为这种转换会带来很多好处您可以编写自己的操纵器,它将返回您的类,该类派生自
basic\u ostream
。在该类中,您可以覆盖
运算符“希望避免转换值”-这不会发生。“在我们的应用程序中,这种转换的实际使用情况是存在一些更复杂的问题”——那么也许您正在寻找一个错误问题的解决方案。不要认为这种转换会带来很多好处您可以编写自己的操纵器,它将返回您的类,该类派生自
basic\u ostream
。在该类中,您可以覆盖
运算符“希望避免转换值”-这不会发生。“在我们的应用程序中,这种方法的实际使用情况是存在更复杂的问题”——那么也许您正在寻找错误问题的解决方案。这不是我想要的解决方案。这不是我想要的解决方案。
 std::cout << std::hex << static_cast<int>('a');