永发信息网

c++ bitset 怎么输出指定区间的位数

答案:2  悬赏:10  手机版
解决时间 2021-01-30 14:59
  • 提问者网友:动次大次蹦擦擦
  • 2021-01-29 14:41
是否可以定义一个bitset ,初始化使用另一个bitset的某些位,也就是说bs1 = (bs2,pos,bits)等类似的形式?

谢谢。

bitset<3> bs(6);
bitset<2> bs2;
cout<< bs2 <
bs2 = (bs,0,1);

cout<< bs2 < cout<< bs <我用以上的语句没有报错,确实改变了。但是结果不是自己想的。
最佳答案
  • 五星知识达人网友:山有枢
  • 2021-01-29 15:10
bitset本身没有这样的构造方法和赋值操作,如果经常要这样操作,可以自己定义一个函数:
template  
bitset& cpbitset(bitset& des, const bitset& src,int pos,int bits)

 if ((void*)&des==(void*)&src||pos>=des.size()||pos>=src.size())
  return des;
 if (pos+bits>=src.size())  bits=src.size()-pos; 
 if (pos+bits>=des.size()) bits=des.size()-pos; 
 for (int i=pos;i    des[i]=src[i]; 
 return des;

使用:
bitset<15> b1(2047);
bitset<20> b2;
cpbitset(b2,b1,3,5);  //复制从下标3(第4位)开始的5位 (3,4,5,6,7)
 
 
bs2 = (bs,0,1);  //这个就是bs2=1; 右边的bs,0,1只是个逗号表达式而已
全部回答
  • 1楼网友:琴狂剑也妄
  • 2021-01-29 15:41
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯