請考慮以下幾點:定製的std ::六角機械臂,對於無符號字符工作
unsigned char a(65);
unsigned char z(90);
std::cout << std::hex << a << ", " << z <<std::endl;
輸出:
A, Z
但所需的輸出是:
41, 5a
爲了實現這一目標我想避免必須轉換這樣的值,例如:
std::cout << std::hex << int(a) << ", " << int(z) <<std::endl;
,而是有一些神奇的手,我可以事先包括:
std::cout << uchar_hex_manip << a << ", " << z << std::endl;
所以要求我的問題是,我該怎麼定義「uchar_hex_manip」工作?
UPDATE:我明白迄今爲止所有的意見和建議,但我已經說過我想避免轉換價值觀,似乎沒有人會完全承認。 '我上面提到的'a << ", " << z
'代表了稍後流式傳輸的值 - 在我們的應用中,這種情況的實際使用情況是有一些更復雜的事情發生,因爲各種原因,理想的情況是不需要鞋對於特定情況下的角色。
不要以爲這種轉換帶來了很多好處 – billz
你可以編寫你自己的操作器,它會返回** your ** class,它是從'basic_ostream'派生的。在那個類中,你可以覆蓋'operator <<'作爲'unsigned char'來將它打印爲整數。不幸的是,我現在沒有足夠的時間來寫這個作爲答案的例子。 *但請注意:僅僅因爲這是可能的**並不意味着你應該這樣做; **我建議將其轉換爲'int'而不是**。* – soon
「希望避免轉換值」---不會發生。 「在我們的應用程序中的實際使用案例是,有更復雜的東西」 - 那麼也許你正在尋找解決錯誤問題的方法。 –