Boost logo

Boost :

Subject: Re: [boost] hex/unhex()?
From: Olaf van der Spek (ml_at_[hidden])
Date: 2011-11-02 07:47:02


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.

-- 
Olaf

Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk