将字符向量转换为单个字符串[重复]

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将字符向量转换为单个字符串[重复]相关的知识,希望对你有一定的参考价值。

这个问题在这里已有答案:

如果这个问题已经回答,请告诉我,我会删除它。


我有一个字符向量代表一个位串(或布隆过滤器):

std::vector<unsigned char> bit_table_;

问题:如何将向量转换为单个位串?

编辑:一般来说,布隆过滤器是一个位串:例如。 10010101011000.在here中,它表示为上面的矢量。我想将它转换为位串。

答案

用于位串的最佳C ++库是奇怪命名的bitset(奇数因为它是有序的,而不是无序的):

std::bitset<1024> bs;
for (int i = 0; i < bit_table_.size(); ++i) {
    bs[i] = bit_table_[i];
}

bitset的一个便利功能是整个事物可以立即打印,作为人类可读的位串,左边是MSB,右边是LSB(例如,数字45的“00101101”):

std::cout << bs << std::endl;

请注意,bitset需要在编译时知道位串的大小(或至少是上限)。 (我选择了1024只是为了证明它可以比机器的字大小大得多。)

但是,如果您的位向量确实适合unsigned longunsigned long long,那么您可以快速获取打包位:

unsigned long bits = bs.to_ulong();
unsigned long long bits = bs.to_ullong();

以上是关于将字符向量转换为单个字符串[重复]的主要内容,如果未能解决你的问题,请参考以下文章

将字符串中的逗号分隔数字转换为数字向量[重复]

如何将字符串数字的单元格数组转换为数值向量[重复]

将由单个数字和序列组成的字符串转换为允许对向量或数据帧进行子集化的格式

如何将字符串转换为 uint32_t [重复]

Bash将多行字符串转换为单个换行符分隔的字符串[重复]

将 Vector<int> 转换为字符串 [重复]