Declrations
namespace base64 {
template <class InputIterator, class OutputIterator>
OutputIterator encode(InputIterator first, InputIterator last,
OutputIterator result);
std::string encode(const char* src, size_t n);
std::string encode(const std::string& src);
template <class InputIterator, class OutputIterator>
OutputIterator decode(InputIterator first, InputIterator last,
OutputIterator result);
std::string decode(const char* src, size_t n);
std::string decode(const std::string& src);
}
Overview
base64 は,バイト列を Base64 方式で encode/decode するための関数群です. 引数には,入力データ,および文字列を指定することができます.その他のデータを encode する場合は,1Byte (char 型)の配列にデータを格納してその配列を指定して下さい.
Example
#include <iostream>
#include <string>
#include "clx/base64.h"
int main(int argc, char* argv[]) {
// 入力ストリームからデータを受け取る場合
std::istreambuf_iterator<char> input(std::cin);
std::istreambuf_iterator<char> last;
std::string code;
std::insert_iterator<std::string> ss(code, code.begin());
clx::base64::encode(input, last, ss);
std::cout << "from std::cin" << std::endl;
std::cout << "encode: " << code << std::endl;
std::cout << "decode: ";
std::ostreambuf_iterator<char> output(std::cout);
clx::base64::decode(code.begin(), code.end(), output);
std::cout << std::endl;
std::cout << std::endl;
// 文字列からデータを受け取る場合
std::string src = "Hello, world!";
code = clx::base64::encode(src);
std::cout << "from std::string" << std::endl;
std::cout << "encode: " << code << std::endl;
std::cout << "decode: " << clx::base64::decode(code) << std::endl;
return 0;
}
Result $ echo -n 'Hello, world!' | ./test from std::cin encode: SGVsbG8sIHdvcmxkIQ== decode: Hello, world! from std::string encode: SGVsbG8sIHdvcmxkIQ== decode: Hello, world!