繁体   English   中英

C ++:dynamic_bitset

[英]C++: dynamic_bitset

我在初始化dynamic_bitset遇到问题。 我有这个代码:

for(int j=(data1.length()-1); j>=0; j--){  
    x[j] = data1[j];  
}

其中data1是从文件读入的32位二进制数。

当我输出data1[j]的值时,它输出我需要分配给x的正确值,但是当我输出x时(假设初始化之后),x都是1。

我究竟做错了什么?

编辑:我正在尝试解压缩代码。 压缩代码以32位长的行给出。 我想将所有内容放在一个结构中以便于访问。

我的代码初始化x:

int size = numLines * 32; //numLines is the number of lines of 32 bits
boost::dynamic_bitset<> x(size);  

EDIT2:
每行有8行,每行32位。 for循环嵌套在while循环中,该循环访问那些8行32位二进制文​​件和值为data1的assignes中的每一行,因此data1随着while循环的每次迭代while变化。
第一次迭代:

data1: 10001001110000001001011100110011  

第二次迭代:

data1: 00110011001110001010001110000000  

第三次迭代:

data1: 00000011100000000000000000000000 

等等....

我希望x是一个包含所有这些值相互连接的长位集。

EDIT3:
尝试一种方法:

for(int i=0; i<numLines; i++){
    d.append(data1);
}
boost::dynamic_bitset<> x(std::string(d));

有关如何填充dynamic_bitset请参阅此增强示例

首先,我会将你的循环改为:

for (unsigned i = 0; i < data1.length(); i++) {
    x[i] = data1[i];
}

回答问题编辑:

您可以使用字符串构造dynamic_bitset

boost::dynamic_bitset<> x(std::string(data1));

所以只需读取整个字符串(假设它不是太大 ),扔掉任何空格,这样你只需要一个1s和0s的长字符串(1001010101101101101110100010 ......),然后构建你的bitset。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM