|
Boost : |
Subject: Re: [boost] hex/unhex()?
From: Olaf van der Spek (ml_at_[hidden])
Date: 2011-11-02 07:55:57
On Wed, Nov 2, 2011 at 12:54 PM, Hartmut Kaiser
<hartmut.kaiser_at_[hidden]> wrote:
>> 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!
Why? Your functions seem quite close to the desired functionality.
-- Olaf
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk