|
Boost : |
Subject: Re: [boost] hex/unhex()?
From: Hartmut Kaiser (hartmut.kaiser_at_[hidden])
Date: 2011-11-02 07:54:21
> On Wed, Nov 2, 2011 at 12:32 PM, Hartmut Kaiser <hartmut.kaiser_at_[hidden]>
> wrote:
> > As Marshal pointed out, Spirit supports that easily:
> >
> > std::string input("61626f6465");
> > std::string str;
> > if (qi::parse(input.begin(), input.end(), qi::hex, str))
> > assert(str == "abode");
>
> Is there no range-based variant of parse()?
>
> > and
> >
> > std::string str("abode");
> > std::string output;
> > if (karma::generate(back_inserter(output), karma::hex, str))
> > assert(output == "61626f6465");
> >
> > If you want to avoid the cost of possible reallocations in output, just
> call output.reserve(...) upfront. Otherwise both code snippets generate
> code equivalent to hand written assembly and have been shown to be as fast
> as it can get.
>
> When would generate() fail (return false)?
> AFAIK to hex can't fail and in that case a variant that returns
> std::string would be nicer.
Actually, please disregard what I wrote, it is complete nonsense. I misread
your initial mail.
Note to self: drink coffee before responding to email!
Regards Hartmut
---------------
http://boost-spirit.com
http://stellar.cct.lsu.edu
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk