繁体   English   中英

转换std :: vector <bool> 到std :: 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.

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