用std::cout格式化二进制文字
format binary literals with std::cout
以下代码将数字的二进制输出写入控制台,如下所示:
00100000
#include <bitset>
using std::bitset;
#include <iostream>
using std::cout;
using std::endl;
int main()
{
typedef const unsigned char byte;
byte a = 0b00'000'000; // 0
byte b = 0b00'000'001; // 1
byte c = 0b00'000'010; // 2
byte d = 0b00'000'100; // 4
byte e = 0b00'001'000; // 8
byte f = 0b00'010'000; // 16
byte g = 0b00'100'000; // 32
byte h = 0b01'000'000; // 64
byte i = 0b10'000'000; // 128
bitset<8> x = a | 1 << 5;
cout << x << endl;
}
我希望输出是这样的:
00'100'000
有没有一种简单的方法可以实现这一点?
这里有一个解决方案:
template<size_t I>
std::ostream& operator << (std::ostream& os, const bitset<I>& b)
{
int i;
int check = b.size()-b.size()%3;
for(i=b.size()-1; i >= check; --i)
os << b[i];
if(i>0)
os << char(39);
for(; i>=0; --i)
{
os << b[i];
if(i%3 == 0 && i!=0)
os << char(39);
}
return os;
}
使用类似的东西:
std::ostream& operator<<(std::ostream & stream, std::bitset<8> bitset)
{
auto output_string = bitset.to_string();
// here you format output_string as you want
return stream << output_string;
}
相关文章:
- 将成员变量添加到共享库中的类中,不会破坏二进制兼容性吗
- 有根的二进制搜索树.保留与其父级的链接
- 多态二进制函数
- constexpr 函数中的非文字(通过 std::is_constant_evaluated)
- 我可以使用条件运算符初始化C风格的字符串文字吗
- 正在读取二进制文件(is_open)
- visual在c++中将十进制数转换为二进制数
- C++十进制到二进制,如何转换
- cpp二进制搜索问题,计算给定数组中输入元素的出现次数
- 二进制搜索树叶数问题
- 如何将一个ostringstream十六进制字符串字符对转换为单个unit8t等价的二进制值
- 为什么二进制搜索在我的测试中不起作用
- 重载==不适用于二进制树
- 正在尝试重载二进制搜索树分配运算符
- 在C++中将类(带有Vector成员)保存为二进制文件
- 如何使用字符串文字作为宏参数
- 有没有办法从非C/C++文件中读取C++原始字符串文字的内容
- 构造<int>具有 2 个字符串文字的向量
- 如何将二进制十六进制文字输入 std::istream
- 用std::cout格式化二进制文字