C++ Primer 5th笔记(chap 17 标准库特殊设施)bitset类型

Posted thefist11

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++ Primer 5th笔记(chap 17 标准库特殊设施)bitset类型相关的知识,希望对你有一定的参考价值。

1. 提取 bitset 的值

函数返回一个值,保存了与bitset 对象相同的位模式。

  • to_ulong() // 返回unsigned long
  • to_ullong() //返回unsigned long long

只有当bitset 的大小小于等于对应的大小时, 我们才能使用这两个操作(如果bitset中的值不能放入给定类型中,则这两个操作会抛出一个overflow error异常)

unsigned long ulong = bitvec3.to_ulong( );
cout « "ulong = " « ulong << endl;

2. bitset 的 IO 运算符

输入运算符从一个输入流读取字符, 保存到一个临时的 string 对象中。 直到读取的字符数达到对应 bitset 的大小时, 或是遇到不是 1 或 0 的字符时, 或是遇到文件尾或输入错误时, 读取过程才停止。 随即用临时 string 对象来初始化 bitset 。如果读取的字符数小于bitset 的大小, 则与往常一样, 高位将被置为 0。

输出运算符打印一个 bitset 对象中的位模式:

bitset<16> bits;
cin » bits; // 从 cin 读取最多 16 个 0 或 1
cout « "bits: " « bits << endl; // 打冈1冈读取的内容

3. 使用 bitset

用bitset代替 unsigned long 表示 30 个学生的测验结果—“ 通过/失畋”:

bool status;
// 使用位运算符的版本
unsigned long quizA = 0;    // 此值被当做位集合使用
quizA |= 1UL << 27;         // 指出第 27 个学生通过了测验
status = quizA & (1UL << 27); // 检查第 27 个学生是否ton过了测验
quizA &= ~(1UL << 27);      // 第 27 个学生未通过测验

// 使用标准库类 bitset 完成等价的工作
bitset<30> quizB;           // 每个学生分配一位,所有为都被初始化为 0
quizB.set(27);              // 指出第 27 个学生通过了测验
status = quizB[27];         // 检查第 27 个学生是否通过了测验
quizB.reset(27);            // 第 27 个学生未通过测验

以上是关于C++ Primer 5th笔记(chap 17 标准库特殊设施)bitset类型的主要内容,如果未能解决你的问题,请参考以下文章

C++ Primer 5th笔记(chap 17 标准库特殊设施)输出补白

C++ Primer 5th笔记(chap 17 标准库特殊设施)bitset类型

C++ Primer 5th笔记(chap 17 标准库特殊设施)正则表达式

C++ Primer 5th笔记(chap 17 标准库特殊设施)tuple 返回多个值

C++ Primer 5th笔记(chap 17 标准库特殊设施)控制输入格式

C++ Primer 5th笔记(chap 17 标准库特殊设施)bitset操作