我可以这样操作输出流吗?

时间:2013-07-20 14:09:09

标签: c++

我试图使用C ++中的输出流操纵器以二进制格式打印整数,但我没有成功。 我尝试使用以下代码来操纵基础。

#include<iostream>
#include<iomanip>
using namespace std;

int main()
{
    int binary, gray;
    cin >> binary;
    cout << std::setbase(2) << (binary >> 1);
} 

但我想这个操纵器只支持十进制,十六进制和八进制基数。 有没有什么办法可以使用iomanip标题中的操纵符打印二进制格式的整数?

3 个答案:

答案 0 :(得分:0)

使用bitset

cout << bitset<16>(10).toString() << endl;

答案 1 :(得分:0)

std::setbase仅支持8,10或16的基数。您可以使用std::bitset<N>自行打印二进制表示:

#include <bitset>

int main()
{
    std::cout << std::bitset<16>(0x1F); // 0000 0000 0001 1111
}

答案 2 :(得分:0)

#include <bitset>
#include<iostream>

int main(){
    int i=13;
    std::bitset<8> bit (i);
    std::cout<<bit.to_string();

    return 0;
}

结果:

  

00001101


cout<<bitset<8>(0xd).to_string(); 

给出相同的