std :: hex / std :: oct不工作(打印十进制值)

时间:2015-05-26 07:41:32

标签: c++

当我尝试以Hexoct格式打印数字时,我得到十进制输出而不是转换值

我不认为课程定义是必要的,但这里Number

class Number
{
public:
    Number(double);

    virtual void show () =0;

protected:
    double number;
};

例如HexN.h(我觉得问题不是由这些引起的)

#include "Number.h"
#pragma once

class Hex : public Number
{
public:
    Hex(double);

    virtual void show ();
};

show()功能。它没有工作,只是打印回小数而不是所需的基数

void Hex::show()
{
    //std::cout.setf(std::ios::hex, std::ios::basefield); //Once i commented //std::hex 
    cout <<"Hex value is : "<<std::hex<<number<<endl;
}

搜索了stackoverflow和其他网站,但所有人都说使用std::cout<<std::hex<<number;这个功能在这里神奇地无法使用。

编辑:谢谢大家,问题通过将std::hex更改为std::floathex并将double转换为long int的八进制基数来解决。

1 个答案:

答案 0 :(得分:7)

std::hex modifies the default numeric base for integer I/O ,不适用于浮点I / O.

改为使用std::hexfloat