std :: cout :: setf不起作用(setf为hex)

时间:2014-02-16 11:55:59

标签: c++

我测试了“Practical C ++ Programming”一书中的代码。 但以下示例并不像书中所说的那样有效。 我错过了什么?请帮忙。

#include <iostream>

int main() {
    int number = 0x3FF;
    std::cout << "Dec: " << number << '\n';
    std::cout.setf(std::ios::hex);
    std::cout << "Hex: " << number << '\n';

    std::cout.setf(std::ios::dec);
}

预期结果是

Dec: 1023
Hex: 3ff

但是,我得到了

Dec: 1023
Dec: 1023

1 个答案:

答案 0 :(得分:5)

您需要使用the second overload of setf清除std::ios::basefield掩码的基本标志:

std::cout.setf(std::ios::hex, std::ios::basefield);

Dec: 1023
Hex: 3ff

Demo on ideone.