CLewaimaiString.cpp 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. #include "../pch/pch.h"
  2. #include "CLewaimaiString.h"
  3. #include <boost/archive/iterators/base64_from_binary.hpp>
  4. #include <boost/archive/iterators/binary_from_base64.hpp>
  5. #include <boost/archive/iterators/transform_width.hpp>
  6. #include <string>
  7. #include <iostream>
  8. #include <sstream>
  9. using namespace std;
  10. using namespace boost::archive::iterators;
  11. CLewaimaiString::CLewaimaiString()
  12. {
  13. }
  14. CLewaimaiString::~CLewaimaiString()
  15. {
  16. }
  17. bool CLewaimaiString::base64_encode(const string& input, string* output)
  18. {
  19. typedef base64_from_binary<transform_width<string::const_iterator, 6, 8>> Base64EncodeIterator;
  20. stringstream result;
  21. try {
  22. copy(Base64EncodeIterator(input.begin()), Base64EncodeIterator(input.end()), ostream_iterator<char>(result));
  23. }
  24. catch (...) {
  25. return false;
  26. }
  27. size_t equal_count = (3 - input.length() % 3) % 3;
  28. for (size_t i = 0; i < equal_count; i++)
  29. {
  30. result.put('=');
  31. }
  32. *output = result.str();
  33. return output->empty() == false;
  34. }
  35. bool CLewaimaiString::base64_decode(const string& input, string* output)
  36. {
  37. typedef transform_width<binary_from_base64<string::const_iterator>, 8, 6> Base64DecodeIterator;
  38. stringstream result;
  39. try {
  40. copy(Base64DecodeIterator(input.begin()), Base64DecodeIterator(input.end()), ostream_iterator<char>(result));
  41. }
  42. catch (...) {
  43. return false;
  44. }
  45. *output = result.str();
  46. return output->empty() == false;
  47. }
  48. void CLewaimaiString::trim(string &s)
  49. {
  50. if (!s.empty())
  51. {
  52. s.erase(0, s.find_first_not_of(" "));
  53. s.erase(s.find_last_not_of(" ") + 1);
  54. }
  55. }