
On Wed, Nov 2, 2011 at 12:32 PM, Hartmut Kaiser <hartmut.kaiser@gmail.com> 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