![](/img/trans.png)
[英]Sorting a std::vector<std::pair<std::string,bool>> by the string?
[英]Convert std::vector<bool> to std::string
我有一个二进制数据向量,希望将其转换为字符串。 我该如何完成这项任务。 为了清楚起见,我不希望字符串只有1和0。 我希望每8个条目等于一个字符。
遍历位,并使用按位运算符将其放入char
值。
这没有什么特别棘手的。 如果您不熟悉按位算术,则可以先尝试以更熟悉的语言实现它,然后再将其转换为C ++作为练习。
std::size_t divide_rounding_up( std::size_t dividend, std::size_t divisor )
{ return ( dividend + divisor - 1 ) / divisor; }
std::string to_string( std::vector< bool > const & bitvector ) {
std::string ret( divide_rounding_up( bitvector.size(), 8 ), 0 );
auto out = ret.begin();
int shift = 0;
for ( bool bit : bitvector ) {
* out |= bit << shift;
if ( ++ shift == 8 ) {
++ out;
shift = 0;
}
}
return ret;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.