我想要实现的是从std :: vector< bool>获取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不是正确的工具,因为它设计用于字符串......
你能提出更好的实施方案吗?