我测试了“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
答案 0 :(得分:5)
您需要使用the second overload of setf
清除std::ios::basefield
掩码的基本标志:
std::cout.setf(std::ios::hex, std::ios::basefield);
Dec: 1023
Hex: 3ff