我在“实用C++编程”一书中测试了代码。但是,下面的例子并不像书所说的那样有效。我遗漏了什么?请帮帮忙。
#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发布于 2014-02-16 12:02:34
您需要使用setf来清除带有std::ios::basefield掩码的基本标志:
std::cout.setf(std::ios::hex, std::ios::basefield);
Dec: 1023
Hex: 3ffDemo on ideone.
https://stackoverflow.com/questions/21810741
复制相似问题