I reported this problem a few months ago – apparently it is a feature that this only works on input data that is a multiple of 3 bytes long

  Andrew

 

From: boost-users-bounces@lists.boost.org [mailto:boost-users-bounces@lists.boost.org] On Behalf Of Terdale, Shantibhushan
Sent: Tuesday, August 26, 2008 12:16 PM
To: boost-users@lists.boost.org
Subject: [Boost-users] base64_from_binary Q

 

I am using this sample to prove myself that base64_from_binary and binary_from_base64 can be used in my app. But I am having little problem and not able to understand whats missing

 

Here is the sample

 

#include "boost/archive/iterators/base64_from_binary.hpp"

#include "boost/archive/iterators/binary_from_base64.hpp"

#include "boost/archive/iterators/transform_width.hpp"

#include <string>

#include <iostream>

using namespace std;

using namespace boost::archive::iterators;

typedef

base64_from_binary<

transform_width<std::string::iterator, 6, sizeof(char) * 8>

> base64_t;

typedef

transform_width<

binary_from_base64<std::string::iterator>, sizeof(char) * 8, 6

> binary_t;

int main()

{

string str = "Hello, world!";

cout << str << endl;

string enc(base64_t(str.begin()), base64_t(str.end()));    // Problem here. It works when I specify "str.end()-1" instead of "str.end()" but I loose last character after decoding.

cout << enc << endl;

string dec(binary_t(enc.begin()), binary_t(enc.end()));

cout << dec << endl;

return 0;

}

Will appreciate any help.  I tried std::copy as well and have same problem.