详解C++ bitset用法
C++的bitset在bitset头文件中,它是一种类似数组的结构,它的每一个元素只能是0或1,每个元素仅用1bit空间。
下面是具体用法
构造函数
bitset常用构造函数有四种,如下
bitset<4>bitset1;//无参构造,长度为4,默认每一位为0 bitset<8>bitset2(12);//长度为8,二进制保存,前面用0补充 strings="100101"; bitset<10>bitset3(s);//长度为10,前面用0补充 chars2[]="10101"; bitset<13>bitset4(s2);//长度为13,前面用0补充 cout<注意:
用字符串构造时,字符串只能包含'0'或'1',否则会抛出异常。
构造时,需在<>中表明bitset的大小(即size)。
在进行有参构造时,若参数的二进制表示比bitset的size小,则在前面用0补充(如上面的栗子);若比bitsize大,参数为整数时取后面部分,参数为字符串时取前面部分(如下面栗子):
bitset<2>bitset1(12);//12的二进制为1100(长度为4),但bitset1的size=2,只取后面部分,即00 strings="100101"; bitset<4>bitset2(s);//s的size=6,而bitset的size=4,只取前面部分,即1001 chars2[]="11101"; bitset<4>bitset3(s2);//与bitset2同理,只取前面部分,即1110 cout<可用的操作符
bitset对于二进制有位操作符,具体如下
bitset<4>foo(string("1001")); bitset<4>bar(string("0011")); cout<<(foo^=bar)<>=1)< >1)< 此外,可以通过[]访问元素(类似数组),注意最低位下标为0,如下:
bitset<4>foo("1011"); cout<当然,通过这种方式对某一位元素赋值也是可以的,栗子就不放了。
可用函数
bitset还支持一些有意思的函数,比如:
bitset<8>foo("10011011"); cout<补充说明一下:test函数会对下标越界作出检查,而通过[]访问元素却不会经过下标检查,所以,在两种方式通用的情况下,选择test函数更安全一些
另外,含有一些函数:
bitset<8>foo("10011011"); cout<同样,它们也都会检查下标是否越界,如果越界就会抛出异常
最后,还有一些类型转换的函数,如下:
bitset<8>foo("10011011"); strings=foo.to_string();//将bitset转换成string类型 unsignedlonga=foo.to_ulong();//将bitset转换成unsignedlong类型 unsignedlonglongb=foo.to_ullong();//将bitset转换成unsignedlonglong类型 cout<以上所述是小编给大家介绍的C++bitset用法详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对毛票票网站的支持!