c++ - 将 std::vector<bool> 转换为 std::string

标签 c++

我有一个二进制数据 vector ,想将其转换为字符串。我怎样才能完成这个任务。需要澄清的是,我并不希望有一串只有 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;
}

关于c++ - 将 std::vector<bool> 转换为 std::string,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41456692/

相关文章:

c++ - C++ 字符串的算术运算

c++ - gdb 错误 : Unable to execute epoll_wait: (4) Interrupted system call

c++ - future 是检查单个线程完成的安全方法吗?

c++ - opencv中 'imquantize'函数的实现

没有井号的 C++ 宏定义

c++ - gnu++0x 标准的 GNU 版本问题

c++ - 在 Qt 中的两个类之间发出信号

c++ - 警告 C26495 从构造函数调用函数来初始化变量,为什么?

java - 从 C++ 代码运行可执行 jar

c++ - 如何从字符串开头提取子字符串到第二个定界符?