...
mBase64Chars="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
mEof=false;
...
template<typename Source>
std::streamsize Base64Decoder::read(Source& source, char* s, std::streamsize n) {
std::streamsize i=0;
boost::array< char,4 > encData;
int counter=0;
std::string innerStream;
std::cout << n << std::endl;
while (!mEof) {
char inputChar=boost::iostreams::get(source);
if (EOF==inputChar) {
mEof=true;
if (0<counter) {
for (int j=counter;4>j;j++) {
char zero=0;
encData[j]=mBase64Chars.find(zero);
}
counter=4;
}
}
else {
if ('='==inputChar)
inputChar=0;
encData[counter++]=mBase64Chars.find(inputChar);
}
if (4==counter) {
boost::array< char, 3 > decData=convert(encData);
for (int j=0;j<decData.static_size;j++) {
const char& cData=decData[j];
s[i++]=cData;
std::cout << cData << ":" << i << ":" << (int)cData << ":" << mEof << std::endl;
}
counter=0;
}
}
return i;
}