如何让系统在十六进制数前打印0x,在八进制数前打印0?

5

我的老师说在作业中,我们不允许手动在十六进制数字前添加0x,而是要让系统自动添加。

目前我的代码如下:

cout << "Hex" << setw(12) << hex << static_cast<int>(letter) << setw(12) << hex
        << number << setw(12) << hex << static_cast<int> (symbol) << endl;

它打印出正确的十六进制值,但没有带上0x。

此外,在处理八进制数时,我必须让系统再次在数字前面打印0(而不是手动输入)我的代码可以打印出正确的值,但没有前导的0:

cout << "Octal" << setw(12) << setbase(8) << static_cast<int>(letter) << setw(12) << setbase(8)
    << number << setw(12) << setbase(8) << static_cast<int>(symbol) << endl;
1个回答

7

使用 std::showbase

std::cout << std::hex << std::showbase << 1234567890;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接