performance_iterators_base64.cpp

来自「Boost provides free peer-reviewed portab」· C++ 代码 · 共 101 行

CPP
101
字号
/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8// test_iterators.cpp// (C) Copyright 2002 Robert Ramey - http://www.rrsd.com . // Use, modification and distribution is subject to the Boost Software// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at// http://www.boost.org/LICENSE_1_0.txt)#include <algorithm>#include <list>#if (defined _MSC_VER) && (_MSC_VER == 1200)#  pragma warning (disable : 4786) // too long name, harmless warning#endif#include <cstdlib>#include <cstddef> // size_t#include <boost/config.hpp>#ifdef BOOST_NO_STDC_NAMESPACEnamespace std{     using ::rand;     using ::size_t;}#endif#include <boost/pfto.hpp>#include <boost/archive/iterators/binary_from_base64.hpp>#include <boost/archive/iterators/base64_from_binary.hpp>#include <boost/archive/iterators/insert_linebreaks.hpp>#include <boost/archive/iterators/remove_whitespace.hpp>#include <boost/archive/iterators/transform_width.hpp>#include "../test/test_tools.hpp"#include <iostream>template<typename CharType>void test_base64(){    CharType rawdata[150];    std::size_t size = sizeof(rawdata) / sizeof(CharType);    CharType * rptr;    for(rptr = rawdata + size; rptr-- > rawdata;)        *rptr = std::rand();    // convert to base64    typedef std::list<CharType> text_base64_type;    text_base64_type text_base64;    typedef         boost::archive::iterators::insert_linebreaks<            boost::archive::iterators::base64_from_binary<                boost::archive::iterators::transform_width<                    CharType *                    ,6                    ,sizeof(CharType) * 8                >            >             ,72        >         translate_out;    std::copy(        translate_out(BOOST_MAKE_PFTO_WRAPPER(static_cast<CharType *>(rawdata))),        translate_out(BOOST_MAKE_PFTO_WRAPPER(rawdata + size)),        std::back_inserter(text_base64)    );    // convert from base64 to binary and compare with the original     typedef         boost::archive::iterators::transform_width<            boost::archive::iterators::binary_from_base64<                boost::archive::iterators::remove_whitespace<                    BOOST_DEDUCED_TYPENAME text_base64_type::iterator                >            >,            sizeof(CharType) * 8,            6        > translate_in;        BOOST_CHECK(        std::equal(            rawdata,            rawdata + size,            translate_in(BOOST_MAKE_PFTO_WRAPPER(text_base64.begin()))        )    );}inttest_main( int argc, char* argv[] ){    test_base64<char>();    #ifndef BOOST_NO_CWCHAR    test_base64<wchar_t>();    #endif    return EXIT_SUCCESS;}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?