Declrations
namespace base64 { template <class InIter, class OutIter> OutIter encode(InIter first, InIter last, OutIter result); std::string encode(const char* src, size_t n); std::string encode(const std::string& src); template <class InIter, class OutIter> OutIter decode(InIter first, InIter last, OutIter 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!