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
>> On Wed, Nov 2, 2011 at 12:32 PM, Hartmut Kaiser <hartmut.kaiser_at_[hidden]>
>> > 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.
Boost list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk