
I must be missing something fundamental here. The following code fragment doesn't work (VC++ 8.0 SP1) - the checked iterators in STL catch walking off the end of the source - transform_width is attempting to access the second element of the vector typedef base64_from_binary< transform_width<vector<char>::const_iterator, 6, 8> > base64_t; vector<char> hippo(1); string enc(base64_t(hippo.begin()), base64_t(hippo.end())); // -> checked iterator assertion fires In basic_text_oprimitive.ipp, the iterator is a pointer so it's possible it may be silently doing something bad Andrew From: boost-users-bounces@lists.boost.org [mailto:boost-users-bounces@lists.boost.org] On Behalf Of Robert Ramey Sent: Friday, January 04, 2008 11:58 AM To: boost-users@lists.boost.org Subject: [Spam:***** SpamScore] Re: [Boost-users] base 64 encoding Take a look at basic_text_oprimitive.ipp around line # 64. Note that I add "padding" here to address this problem. Perhaps that is the missing magic. Hmmm. perhaps that code should be part of the iterator. Also look at the code text_iterators_base64 in the serialization test suite. Robert Ramey "Eames, Andrew" <andrew@cognex.com> wrote in message news:8F37BF6F420455468C4BD57DD6BE199004C6146B@cobra.pc.cognex.com... But there is still the problem with running off the end of the source - If the source is not a multiple of 3 bytes then the input iterator will run off the end of the input sequence which can cause an error. Andrew From: boost-users-bounces@lists.boost.org [mailto:boost-users-bounces@lists.boost.org] On Behalf Of Robert Ramey Sent: Thursday, January 03, 2008 6:47 PM To: boost-users@lists.boost.org Subject: Re: [Boost-users] base 64 encoding I had to separately record the number of bytes. Then when I decode, just pull off that number of bytes. Robert Ramey "Eames, Andrew" <andrew@cognex.com> wrote in message news:8F37BF6F420455468C4BD57DD6BE199004C613F8@cobra.pc.cognex.com... Hi, I'm trying to encode base64 data by composing base64_from_binary with transform_width but this doesn't appear to work correctly when the data is not a multiple of 3 long. What is the correct way to handle this - do I have to handle the padding myself by extending the input data and then patching the tail of the result? Thanks Andrew ________________________________ _______________________________________________ Boost-users mailing list Boost-users@lists.boost.org http://lists.boost.org/mailman/listinfo.cgi/boost-users