fork(1) download
  1. #include <iostream>
  2. #include <sstream>
  3. #include <boost/archive/iterators/binary_from_base64.hpp>
  4. #include <boost/archive/iterators/transform_width.hpp>
  5.  
  6. std::string base64_decode(const std::string &s) {
  7. namespace bai = boost::archive::iterators;
  8.  
  9. std::stringstream os;
  10.  
  11. typedef bai::transform_width<bai::binary_from_base64<const char *>, 8, 6>
  12. base64_dec;
  13.  
  14. unsigned int size = s.size();
  15.  
  16. // Remove the padding characters, cf.
  17. // https://s...content-available-to-author-only...t.org/trac/boost/ticket/5629
  18. if(size && s[size - 1] == '=') {
  19. --size;
  20. if(size && s[size - 1] == '=') --size;
  21. }
  22. if(size == 0) return std::string();
  23.  
  24. std::copy(base64_dec(s.data()), base64_dec(s.data() + size),
  25. std::ostream_iterator<char>(os));
  26.  
  27. return os.str();
  28. }
  29.  
  30. int main(int argc, char *argv[])
  31. {
  32. std::string str;
  33. std::cin >> str;
  34. std::cout << base64_decode(str);
  35. return 0;
  36. }
  37.  
Success #stdin #stdout 0s 3420KB
stdin
OTE4ZDUxYzM0ZTIyNmEzZDVmY2NjNjAyMzYyOTU5MTg0NzVmYWEwMjox
stdout
918d51c34e226a3d5fccc60236295918475faa02:1