使用boost从std :: vector <bool>获取base64

时间:2015-09-23 12:24:28

标签: c++ boost base64

我想要实现的是从std :: vector&lt; bool&gt;获取base64字符串。基于boost :: archive :: iterator :: base64_from_binary的例子我创建了以下实现,但是有一些缺点:

std::string get_as_base64(const std::vector<bool> &sequence) {
    namespace bai = boost::archive::iterators;

    std::ostringstream stream;

    typedef bai::base64_from_binary<bai::transform_width<std::vector<bool>::const_iterator, 6, 1, char>> base64_encoder;
    std::copy(base64_encoder(sequence.cbegin()), base64_encoder(sequence.cend()), bai::ostream_iterator<char>(stream));

    return stream.str();
}

首先,它要求容器的大小为6的倍数(在其他情况下,它可能通过一些错误实现遇到无限循环)。接下来,由于修改bool和char类型,它会导致发生一些编译器警告。我只是认为transform_width不是正确的工具,因为它设计用于字符串......

你能提出更好的实施方案吗?

0 个答案:

没有答案