C++ bitset 的一些有趣事实?


C++ 编程语言在 C++ 标准模板库中定义了一个名为 bitset 的容器。这个 bitset 容器用于在位级别操作元素,即变量的每个位,也就是给定值的二进制转换。

1. Bitset 就像一个字符串 - Bitset 是一个位容器(只有 0 和 1 是有效的)。您可以创建任何一组位,由 bitset 的起始索引值和要考虑的元素数量指定,即您可以创建一个包含 2 个元素的 bitset,从 bitset 的索引 1 开始,并将其附加到 bitset 的末尾。

例如 - 我们需要从位字符串 01001110 的索引值 2 开始填充 4 个元素。此 bitset 将获取元素0011,这些元素将附加到 bitset 的末尾。因此,通过这种方法定义的 8 位 bitset 的值为00000011

示例

 现场演示

#include <bitset>
#include <string>
#include <iostream>
int main() {
   std::string bit_string = "10010110";
   std::bitset<8> b1(bit_string, 1 , 4);
   std::cout << b1 << '\n' ;
   return 0;
}

输出

00000010

2. 从字符串构造 Bitset - 如果您有一个字符串,其中只有两种类型的用于创建的值。您可以将此字符串转换为一个 bitset,该 bitset 将值视为其各自的 0/1 表示。

让我们举个例子来更好地理解这个概念,

我们有一个字符串“xyxxyyx”,从中我们可以创建一个与数组长度相同的 bitset,其中 x=0,y=1。创建的 bitset 为0100110

库中定义了一个构造函数来执行此任务 -

bitset(str, offSet, size, zeroVal , oneVal) ;

这是一个用于创建 bitset 的构造函数。让我们深入了解构造函数,并学习构造函数的每个参数传达了什么。

str - 用于创建 bitset 的字符串。

offSet - 字符串的字符串索引。

size - 要创建的 bitset 的大小。

zeroVal - 将被视为 0 的字符串值

oneVal - 将被视为 1 的字符串值]

示例

 现场演示

#include <bitset>
#include <string>
#include <iostream>
using namespace std;
int main() {
   string bitstr = "xyxxyyyx";
   bitset<8> bits(bitstr, 0, bitstr.size(), 'x', 'y');
   cout <<"The bitset is : "<< bits << '\n';
}

输出

The bitset is: 01001110

3. 将 bitset 转换为字符串 - 在 bitset 中,有一个函数可以将 bitset 转换为字符串。函数to_string()用于将 bitset 的值存储到字符串中。字符串的长度与 bitset 的长度相同。

将 bitset 的元素存储到字符串中的顺序与 bitset 顺序相同,即 bitset 的第一个元素是字符串的第一个元素。

01010100 的字符串转换是“01010100”。

您可以通过在方法的参数列表中指定来用任何字母替换 0 和 1。这只是我们在 bitset 构造时所学内容的反向操作。

示例

 现场演示

#include <iostream>
#include <bitset>
using namespace std;
int main() {
   bitset<8> b(19);
   cout<<"The value of the bitset is : "<<b<<endl;
   cout<<"The string conversion of the bitset is : "<<b.to_string()<<endl;
   cout<<"The string conversion by replacing 0 with T and 1 with P is : ";
   cout<< b.to_string('T', 'P')<<endl;
}

输出

The value of bitset is : 00010011
The string conversion of bitset is : 00010011
string conversion by replacing 0 with T and 1 with P is : TTTPTTPP

bitset 上还有许多其他操作。还有一些可以使用的位运算符。这里讨论了 bitset 的基本函数和属性。

更新于: 2019年10月4日

231 次查看

开启您的 职业生涯

通过完成课程获得认证

开始学习
广告