【发布时间】:2019-04-28 15:54:26
【问题描述】:
基本上,我正在尝试根据红色、绿色和蓝色的值生成十六进制值...我能够将所有内容转换为十六进制,但我希望结果是 6 位十六进制数如果只有 4 个输出数字,则用 0 填充。
这是我所拥有的:"
int main() {
stringstream hexstring;
int red,green,blue;
cout << "Red: ";cin >> red;
cout << "Green: ";cin >> green;
cout << "Blue: ";cin >> blue;
hexstring << hex << setfill('0') << setw(6) << uppercase << red << green << blue;
cout << "#" << hexstring.str();
}
这是当我使用 0 表示红色、1 表示绿色、43 表示蓝色时的输出:
Red: 0
Green: 1
Blue: 43
#00000012B
这增加了 6 个零,因为我的 setw 是 6。我可以将其设置为 2 个零以获得总共 6 位数字,但如果我更改红色、绿色、蓝色的值,我还必须更改 setw 的值。 ..
如何让它始终为 255 以内的所有值输出 6 位数字?
【问题讨论】:
-
setw()的设置只适用于下一个值输出..尝试输出setw(2) << red << setw(2) << green << setw(2) << blue
标签: c++ string hex stringstream