actions.cpp
来自「Boost provides free peer-reviewed portab」· C++ 代码 · 共 84 行
CPP
84 行
/*============================================================================= Copyright (c) 2001-2008 Hartmut Kaiser Copyright (c) 2001-2008 Joel de Guzman 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 <boost/config/warning_disable.hpp>#include <boost/spirit/include/karma.hpp>#include <boost/lambda/lambda.hpp>#include <boost/bind.hpp>#include <iostream>#include <sstream>// Presented are various ways to attach semantic actions// * Using plain function pointer// * Using simple function object// * Using boost.bind// * Using boost.lambdausing namespace boost::spirit;void read(int& i){ i = 42;}struct read_action{ void operator()(int& i, unused_type, unused_type) const { i = 42; }};///////////////////////////////////////////////////////////////////////////////int main(){ { // example using plain functions std::string generated; bool result = karma::generate(std::back_inserter(generated), '{' << int_[&read] << '}'); if (result) std::cout << "Simple function: " << generated << std::endl; } { // example using simple function objects std::string generated; bool result = karma::generate(std::back_inserter(generated), '{' << int_[read_action()] << '}'); if (result) std::cout << "Simple function object: " << generated << std::endl; } { // example using boost.bind std::string generated; bool result = karma::generate(std::back_inserter(generated), '{' << int_[boost::bind(&read, _1)] << '}'); if (result) std::cout << "Boost.Bind: " << generated << std::endl; } { // example using boost.lambda namespace lambda = boost::lambda; std::string generated; std::stringstream strm("42"); bool result = karma::generate(std::back_inserter(generated), '{' << int_[strm >> lambda::_1] << '}'); if (result) std::cout << "Boost.Lambda: " << generated << std::endl; } return 0;}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?