CLX C++ Libraries
Home >> base64

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

example_base64.cpp

#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!