首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >std::cout::setf不起作用(setf到十六进制)

std::cout::setf不起作用(setf到十六进制)
EN

Stack Overflow用户
提问于 2014-02-16 11:55:59
回答 1查看 1K关注 0票数 2

我在“实用C++编程”一书中测试了代码。但是,下面的例子并不像书所说的那样有效。我遗漏了什么?请帮帮忙。

代码语言:javascript
复制
#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);
}

预期结果是

代码语言:javascript
复制
Dec: 1023
Hex: 3ff

但是,我有

代码语言:javascript
复制
Dec: 1023
Dec: 1023
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-02-16 12:02:34

您需要使用setf来清除带有std::ios::basefield掩码的基本标志:

代码语言:javascript
复制
std::cout.setf(std::ios::hex, std::ios::basefield);

Dec: 1023
Hex: 3ff

Demo on ideone.

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21810741

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档