将字符向量转换为单个字符串

Convert a vector of characters to a single string

本文关键字:单个 字符串 转换 字符 向量      更新时间:2023-10-16

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


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

std::vector<unsigned char> bit_table_;

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

编辑:一般来说,布隆过滤器是一个位字符串:例如10010101011000。在这里,它表示为上述向量。我想将其转换为位字符串。

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

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

bitset的一个方便功能是,整个东西可以一次打印,作为人类可读的位字符串,MSB在左边,LSB在右边(例如,"00101101"表示数字45(:

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

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

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

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