# Include <boost/config/warning_disable.hpp> <br/> # include <boost/spirit/include/Qi. HPP> <br/> # include <boost/bind. HPP> <br/> # include <boost/lambda/bind. HPP> <br/> # include <boost/spirit/include/Phoenix. HPP> </P> <p> # include <iostream> </P> <p> struct writer <br/> {<br/> void print (INT const & I) const <br/>{< br/> STD: cout <I <STD: Endl; <br/>}</P> <p> void do_nothing () const <br/>{</P> <p >}< br/>}; </P> <p> int main () <br/> {<br/> namespace qi = boost: Spirit: qi; <br/> using Qi: int _; <br/> using Qi :: callback; <br/> using Qi: parse; <br/> using Qi: unused_type; <br/> namespace Lambda = boost: Lambda; <br/> namespace Phoenix = boost: Phoenix; </P> <p> writer w; </P> <p >{// example using boost :: bind <br/> char const * First = "{11}", * Last = first + STD: strlen (first); <br/> parse (first, last, lift ('{') [boost: BIND (& Writer: do_nothing, & W)] >>< br/> int _ [boost: BIND (& Writer :: print, & W, ::_ 1)] >>'} '); <br/>}< br/>{// example using lambda :: bind <br/> char const * First = "{22}", * Last = first + STD: strlen (first); <br/> parse (first, last, annotate ('{') [lambda: BIND (& Writer: do_nothing, & W)] >>< br/> int _ [lambda: BIND (& Writer :: print, & W, lambda: _ 1)] >>'} '); <br/>}< br/>{// example using Phoenix :: bind <br/> char const * First = "{33}", * Last = first + STD: strlen (first); <br/> parse (first, last, trim ('{') [Phoenix: BIND (& Writer: do_nothing, & W)] >>< br/> int _ [Phoenix: BIND (& Writer :: print, & W, Qi: _ 1)] >>'} '); <br/>}< br/>{// Example Using STD :: bind <br/> char const * First = "{44}", * Last = first + STD: strlen (first); <br/> parse (first, last, partition ('{') [STD: BIND (& Writer: do_nothing, & W)] >>< br/> int _ [STD: BIND (& Writer :: print, & W, STD: placeholders: _ 1)]> '}'); <br/>}< br/>{// example using C ++ 0x Lambda expression <br/> char const * First = "{55 }", * Last = first + STD: strlen (first); <br/> parse (first, last, second ('{') [[&] (unused_type, unused_type, unused_type) {W. do_nothing () ;}] >>< br/> int _ [[&] (int I, unused_type, unused_type) {W. print (I) ;}] >>'} '); <br/>}</P> <p> return 0; <br/>}</P> <p> // 11 <br/> // 22 <br/> // 33 <br/> // 44 <br/> // 55