test_non_char.cpp
来自「Boost provides free peer-reviewed portab」· C++ 代码 · 共 102 行
CPP
102 行
///////////////////////////////////////////////////////////////////////////////// test_non_char.cpp//// Copyright 2008 Eric Niebler. Distributed under 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 <boost/xpressive/xpressive.hpp>#include <boost/xpressive/traits/null_regex_traits.hpp>#include "./test.hpp"///////////////////////////////////////////////////////////////////////////////// test_staticvoid test_static(){ static int const data[] = {0, 1, 2, 3, 4, 5, 6}; null_regex_traits<int> nul; basic_regex<int const *> rex = imbue(nul)(1 >> +((set= 2,3) | 4) >> 5); match_results<int const *> what; if(!regex_search(data, data + (sizeof(data)/sizeof(*data)), what, rex)) { BOOST_ERROR("regex_search on integral data failed"); } else { BOOST_CHECK(*what[0].first == 1); BOOST_CHECK(*what[0].second == 6); }}///////////////////////////////////////////////////////////////////////////////// UCharstruct UChar{ UChar(unsigned int code = 0) : code_(code) {} operator unsigned int () const { return this->code_; }private: unsigned int code_;};///////////////////////////////////////////////////////////////////////////////// UChar_traitsstruct UChar_traits : null_regex_traits<UChar>{};///////////////////////////////////////////////////////////////////////////////// test_dynamicvoid test_dynamic(){ typedef std::vector<UChar>::const_iterator uchar_iterator; typedef basic_regex<uchar_iterator> uregex; typedef match_results<uchar_iterator> umatch; typedef regex_compiler<uchar_iterator, UChar_traits> uregex_compiler; std::string pattern_("b.*r"), str_("foobarboo"); std::vector<UChar> pattern(pattern_.begin(), pattern_.end()); std::vector<UChar> str(str_.begin(), str_.end()); UChar_traits tr; uregex_compiler compiler(tr); uregex urx = compiler.compile(pattern); umatch what; if(!regex_search(str, what, urx)) { BOOST_ERROR("regex_search on UChar failed"); } else { BOOST_CHECK_EQUAL(3, what.position()); BOOST_CHECK_EQUAL(3, what.length()); } // test for range-based regex_replace std::vector<UChar> output = regex_replace(str, urx, pattern_); std::string output_(output.begin(), output.end()); std::string expected("foob.*rboo"); BOOST_CHECK_EQUAL(output_, expected);}///////////////////////////////////////////////////////////////////////////////// init_unit_test_suite//test_suite* init_unit_test_suite( int argc, char* argv[] ){ test_suite *test = BOOST_TEST_SUITE("test_non_char"); test->add(BOOST_TEST_CASE(&test_static)); test->add(BOOST_TEST_CASE(&test_dynamic)); return test;}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?