Giriş
Şu satırı dahil ederiz.
Tanımlama
Şöyle yaparız.
Şöyle yaparız.
Şöyle yaparız. Burada girdi yani input 3 veya 4'ün katı olacak şekilde padleniyor. Daha sonra bazı işlemler yapılıyor. Normalde bunların yapılması gerekli değil.
Şu satırı dahil ederiz.
#include <boost/archive/iterators/binary_from_base64.hpp>
#include <boost/archive/iterators/transform_width.hpp>
Bu sınıf bir input iterator. base64 veriyi decode etmek için kullanılır.Tanımlama
Şöyle yaparız.
typedef bi::transform_width<bi::binary_from_base64<string::const_iterator>, 8, 6>
base64_dec;
ConstructorŞöyle yaparız.
std::string base64ints = ...;
string decoded(base64_dec(base64ints.begin()), base64_dec(base64ints.end()));
Örnek
Şöyle yaparız. Burada girdi yani input 3 veya 4'ün katı olacak şekilde padleniyor. Daha sonra bazı işlemler yapılıyor. Normalde bunların yapılması gerekli değil.
#include <boost/archive/iterators/base64_from_binary.hpp>
#include <boost/archive/iterators/binary_from_base64.hpp>
#include <boost/archive/iterators/transform_width.hpp>
#include <boost/archive/iterators/insert_linebreaks.hpp>
#include <boost/archive/iterators/remove_whitespace.hpp>
#include <algorithm>
std::string decode(std::string input)
{
using namespace boost::archive::iterators;
typedef transform_width<binary_from_base64<remove_whitespace
<std::string::const_iterator> >, 8, 6> ItBinaryT;
try
{
// If the input isn't a multiple of 4, pad with =
size_t num_pad_chars((4 - input.size() % 4) % 4);
input.append(num_pad_chars, '=');
size_t pad_chars(std::count(input.begin(), input.end(), '='));
std::replace(input.begin(), input.end(), '=', 'A');
std::string output(ItBinaryT(input.begin()), ItBinaryT(input.end()));
output.erase(output.end() - pad_chars, output.end());
return output;
}
catch (std::exception const&)
{
return std::string("");
}
}
Hiç yorum yok:
Yorum Gönder