将字符向量转换为单个字符串[重复]
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 long
或unsigned long long
,那么您可以快速获取打包位:
unsigned long bits = bs.to_ulong();
unsigned long long bits = bs.to_ullong();
以上是关于将字符向量转换为单个字符串[重复]的主要内容,如果未能解决你的问题,请参考以下文章