⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cmimestring.cpp

📁 BASE64编码/解码 处理的VC源代码
💻 CPP
字号:
#include "stdafx.h"
#include "CMimeString.h"



#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif


#include "CBase64Algo.h"


//-------------------------------------------------------------
//con de

CMimeString::CMimeString(PROCESSTYPE inProcessType, ENCODETYPE inEncodeType, CString & inStr)
{

	Init(inProcessType, inEncodeType, 
			(unsigned char *)(inStr.operator LPCTSTR()),
			inStr.GetLength() );
}

CMimeString::CMimeString(PROCESSTYPE inProcessType, ENCODETYPE inEncodeType, unsigned char * inBuf, int inBufLen)
{
	Init(inProcessType, inEncodeType, inBuf, inBufLen);
}


CMimeString::~CMimeString()
{
	if( mBuf )	
	{
		delete [] mBuf;
		mBuf = 0;
	}
	mBufLen = 0;
}




//-------------------------------------------------------------
//interface
unsigned char * CMimeString::GetBuf(void)
{
	return mBuf;
}

int CMimeString::GetBufLen(void)
{
	return mBufLen;
}

CMimeString::operator LPCTSTR() const
{
	return (LPCTSTR)mBuf;
}

unsigned char * CMimeString::GetFirstPart(int inPartLen)
{
	mPartLen = inPartLen;

	mNextPart = 0;
	return GetNextPart();
}

unsigned char * CMimeString::GetNextPart(void)
{
	if( ( mBufLen - mNextPart * mPartLen ) > 0 )
	{
		if( mNextPart != 0)
		{
			mBuf[mNextPart * mPartLen] = mSaveCut;//
		}
		unsigned char * p = mBuf + mPartLen * mNextPart;
		mNextPart ++;
		if( ( mBufLen - mNextPart * mPartLen ) > 0 )
		{
			mSaveCut = mBuf[mPartLen * mNextPart];//
			mBuf[mPartLen * mNextPart] = '\0';//
		}
		return p;
	}
	else
	{
		return 0;
	}
}

//-------------------------------------------------------------
//helper

void CMimeString::Init(PROCESSTYPE inProcessType, ENCODETYPE inEncodeType, unsigned char * inBuf, int inBufLen)
{
	mBuf = 0;
	mBufLen = 0;

	if( inEncodeType == WYMIME )
	{
		mAlgo = new CMimeAlgo();
	}
	else if( inEncodeType == BASE64 )
	{
		mAlgo = new CBase64Algo();
	}

	if( inProcessType == ENCODING )
	{
		mAlgo->Encode(&mBuf, mBufLen, inBuf, inBufLen);
	}
	else if( inProcessType == DECODING )
	{
		mAlgo->Decode(&mBuf, mBufLen, inBuf, inBufLen);
	}
}

//-------------------------------------------------------------

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -