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 返回多个值