亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? streambuf.cpp

?? 用到內存的序列化和反序列化
?? CPP
字號:
#include "stdafx.h"
#include "StreamBuf.h"

//////////////////////////////////////
//									//
//     ||   (\../) (\../)  ||		//
//   __||____(oo)___(oo)___||___	//
//   --||---"----"-"----"--||---	//
//   __||__@( __ )_( __ )__||___	//
//   --||----"--"---"--"---||---	//
//     ||//              \\||//		//
//   ^^^^^^^^^^^^^^^^^^^^^^^^^^^	//
//////////////////////////////////////

IMPLEMENT_DYNAMIC(CStreamBufException, CException)

UINT CStreamBuf::Read(void* lpBuf, UINT nMax)
{
	ASSERT(IsLoading());
	if(nMax==0)return 0;

	if(m_pBufCur)
	{
		ASSERT(AfxIsValidAddress(lpBuf, nMax));  // read-only access needed
		DWORD dwLeft = GetLeftBufSize();
		nMax = min(nMax, dwLeft);
		memcpy(lpBuf, m_pBufCur, nMax);
		m_pBufCur += nMax;
	}
	m_dwDataSize += nMax;

	return nMax;
}

UINT CStreamBuf::Write(const void* lpBuf, UINT nMax)
{
	ASSERT(IsStoring());
	if(nMax==0)return 0;

	if(m_pBufCur)
	{
		ASSERT(AfxIsValidAddress(lpBuf, nMax, FALSE));  // read-only access needed
		DWORD dwLeft = GetLeftBufSize();
		nMax = min(nMax, dwLeft);
		memcpy(m_pBufCur, lpBuf, nMax);
		m_pBufCur += nMax;
	}
	m_dwDataSize += nMax;

	return nMax;
}

CStreamBuf& CStreamBuf::operator<<(const CString& string)
{
	ASSERT(IsStoring());

	// special signature to recognize unicode strings
#ifdef _UNICODE
	CStreamBuf::operator<<((BYTE)0xff);
	CStreamBuf::operator<<((WORD)0xfffe);
#endif

	UINT nLength = string.GetLength();
	
	if (nLength < 255)
	{
		CStreamBuf::operator<<((BYTE)nLength);
	}
	else if (nLength < 0xfffe)
	{
		CStreamBuf::operator<<((BYTE)0xff);
		CStreamBuf::operator<<((WORD)nLength);
	}
	else
	{
		CStreamBuf::operator<<((BYTE)0xff);
		CStreamBuf::operator<<((WORD)0xffff);
		CStreamBuf::operator<<((DWORD)nLength);
	}

	UINT nSize = nLength*sizeof(TCHAR);
	if(Write((LPCTSTR)string, nSize) != nSize)
		ThrowStreamBufException(CStreamBufException::endOfBuf);
	
	return *this;
}

// return string length or -1 if UNICODE string is found in the archive
UINT _SBReadStringLength(CStreamBuf& sb)
{
	DWORD nNewLen;

	// attempt BYTE length first
	BYTE bLen;
	sb >> bLen;

	if (bLen < 0xff)
		return bLen;

	// attempt WORD length
	WORD wLen;
	sb >> wLen;
	if (wLen == 0xfffe)
	{
		// UNICODE string prefix (length will follow)
		return (UINT)-1;
	}
	else if (wLen == 0xffff)
	{
		// read DWORD of length
		sb >> nNewLen;
		return (UINT)nNewLen;
	}
	else
		return wLen;
}

CStreamBuf& CStreamBuf::operator>>(CString& string)
{
	ASSERT(IsLoading());

#ifdef _UNICODE
	int nConvert = 1;   // if we get ANSI, convert
	typedef CHAR	ITCHAR;	//與TCHAR相反
#else
	int nConvert = 0;   // if we get UNICODE, convert
	typedef WCHAR	ITCHAR; //與TCHAR相反
#endif

	UINT nNewLen = _SBReadStringLength(*this);
	if (nNewLen == (UINT)-1)//如果要讀取的是UNICODE
	{
		nConvert = 1 - nConvert;
		nNewLen = _SBReadStringLength(*this);
		ASSERT(nNewLen != -1);
	}

	if(nNewLen==0)
	{
		string.Empty();
	}
	else
	{
		if(nConvert)
		{
			ITCHAR *pBuf = new ITCHAR[nNewLen+1];
			UINT nSize = nNewLen*sizeof(ITCHAR);
			if(Read(pBuf, nSize) != nSize)
				ThrowStreamBufException(CStreamBufException::endOfBuf);
			pBuf[nNewLen] = 0;
			
			string = pBuf;
			delete []pBuf;
		}
		else
		{
			TCHAR *pBuf = new TCHAR[nNewLen + 1];
			UINT nSize = nNewLen*sizeof(TCHAR);
			if(Read(pBuf, nSize) != nSize)
				ThrowStreamBufException(CStreamBufException::endOfBuf);
			pBuf[nNewLen] = 0;

			string = pBuf;
			delete []pBuf;
		}
	}
	return *this;
}

//轉換成為ANSI字符集寫入
UINT CStreamBuf::WriteLineANSI(LPCTSTR lpszString)
{
#ifdef _UNICODE
	int n = WideCharToMultiByte(CP_ACP, 0, lpszString, -1, NULL, 0, NULL, NULL);
	if(n <= 0 )return 0;
	
	UINT iWrite = 0;
	if(m_pBufCur==NULL)
		iWrite = Write(NULL, n-1);
	else
	{
		PCHAR cBuf = new CHAR[n];
		WideCharToMultiByte(CP_ACP, 0, lpszString, -1, cBuf, n, NULL, NULL);
		iWrite = Write(cBuf, n-1);
		delete []cBuf;
	}

#else
	UINT iWrite = Write(lpszString, strlen(lpszString));
#endif

	iWrite += Write("\r\n", 2);
	return iWrite;
}

//以ANSI字符集方式讀入,并轉換成為相應字符集
UINT CStreamBuf::ReadLineANSI(LPTSTR lpszString, UINT nMax)
{
	char ch;
	int nStop = nMax;
	int nRead = 0;
	char* pText = (char*)lpszString;
	while (nRead < nStop)
	{
		*this >> ch;

		// stop and end-of-line (trailing '\n' is ignored)
		if (ch == '\n' || ch == '\r')
		{
			if (ch == '\r')
				*this >> ch;
			break;
		}
		pText[nRead++] = ch;
	}

#ifdef _UNICODE
	int n = MultiByteToWideChar(CP_ACP, 0, pText, nRead, NULL, 0);
	if(n <= 0 )return 0;
	PCHAR Buf = new char[n];
	memcpy(Buf, pText, n);
	nRead = MultiByteToWideChar(CP_ACP, 0, Buf, nRead, lpszString, n);
	delete []Buf;
#endif

	return nRead;
}

void CStreamBuf::SkipReadTo(const void* lpFind, UINT nSize)
{
	char ch;
	*this>>ch;

	for(;;)
	{
		const char *pCh = (char *)lpFind;
		UINT nCount = nSize;

		while(nCount)
		{
			if(ch != *pCh)
			{
				if(nCount == nSize)
					*this>>ch;
				break;
			}
			if(--nCount==0)return;

			*this>>ch;
			pCh++;
		}
	}
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
韩国成人福利片在线播放| 精品视频一区三区九区| 亚洲成人手机在线| 亚洲综合色在线| 亚洲美女屁股眼交| 18成人在线观看| 亚洲欧美日韩在线播放| 亚洲日本韩国一区| 亚洲一区二区中文在线| 亚洲午夜视频在线| 日韩电影一区二区三区四区| 三级影片在线观看欧美日韩一区二区 | 舔着乳尖日韩一区| 图片区日韩欧美亚洲| 免费成人深夜小野草| 狠狠色丁香久久婷婷综合_中| 国内精品伊人久久久久影院对白| heyzo一本久久综合| 91免费观看视频| 色综合天天在线| 色欧美片视频在线观看| 91小视频在线| 911精品产国品一二三产区| 5858s免费视频成人| 久久久久久久久久久久久女国产乱 | 久久综合av免费| 中国色在线观看另类| 亚洲精品视频一区| 日本亚洲一区二区| 国产超碰在线一区| 欧美在线观看18| 26uuu国产电影一区二区| 国产精品久久久一本精品 | 亚洲欧洲国产日韩| 亚洲h在线观看| 成人免费观看av| 精品一区二区三区视频| 国产欧美精品日韩区二区麻豆天美| 91国偷自产一区二区开放时间| 色婷婷综合久久久中文字幕| 欧美日韩国产另类一区| 一区二区三区精品视频| 欧美天天综合网| 日韩一卡二卡三卡| 韩国av一区二区| 国产一区二区精品久久99| 久久 天天综合| 国产不卡视频一区| 在线不卡中文字幕| 中文字幕第一区二区| 亚洲午夜影视影院在线观看| 精品一区二区三区在线视频| 色婷婷国产精品综合在线观看| 日韩一区二区电影网| 亚洲色图一区二区| 国产精品夜夜爽| 欧美一区二区在线视频| 亚洲三级在线观看| 韩国av一区二区三区四区| 欧美高清hd18日本| 亚洲人妖av一区二区| 精品中文字幕一区二区小辣椒| 99精品国产视频| 亚洲国产成人午夜在线一区| 日韩 欧美一区二区三区| 91极品视觉盛宴| 欧美激情一区二区三区不卡| 久久99国产精品成人| 欧美精品久久99久久在免费线 | 美女视频黄免费的久久| 波多野结衣亚洲一区| 精品久久久久久久久久久久久久久| 1区2区3区国产精品| 风间由美一区二区三区在线观看 | 亚洲精品中文字幕在线观看| 国产成人亚洲综合a∨婷婷图片 | 中文字幕综合网| 亚洲二区在线视频| 色综合天天综合在线视频| 国产精品久久久久永久免费观看 | 日韩欧美卡一卡二| 视频一区二区中文字幕| 欧美老肥妇做.爰bbww视频| 香港成人在线视频| 在线成人av网站| 久久狠狠亚洲综合| 欧美日韩大陆在线| 日本中文字幕不卡| 日韩一区二区三区免费看| 日本在线播放一区二区三区| 欧美一级淫片007| 蜜臀av性久久久久蜜臀aⅴ流畅| 91精品国产综合久久精品| 蜜臀av性久久久久蜜臀aⅴ| 久久综合视频网| 成人午夜免费电影| 亚洲美女精品一区| 91精品综合久久久久久| 国产一区二区0| 亚洲精品中文字幕乱码三区| 欧美群妇大交群中文字幕| 另类小说欧美激情| 伊人婷婷欧美激情| 成人免费高清视频| 一区2区3区在线看| 欧美一级黄色大片| 成人精品国产免费网站| 亚洲最大色网站| 欧美一区二区三区小说| 粉嫩av一区二区三区| 一区二区三区在线视频免费观看| 欧美日本在线一区| 国产美女精品一区二区三区| 国产精品免费久久久久| 欧美日韩三级视频| 国产精品888| 日韩精品三区四区| 国产精品乱码一区二三区小蝌蚪| 欧美性生活大片视频| 国产一区二区三区免费观看| 夜夜嗨av一区二区三区四季av| 日韩女优毛片在线| 91一区在线观看| 国产一区二区三区四区在线观看| 一区二区三区在线视频观看| 精品欧美久久久| 欧美日韩国产a| aaa欧美日韩| 国产精品一卡二| 日本亚洲欧美天堂免费| 亚洲欧美韩国综合色| 精品福利二区三区| 欧美日韩精品综合在线| 99久免费精品视频在线观看| 国产制服丝袜一区| 亚洲成av人片| 一区二区三区欧美日韩| 久久精品免费在线观看| 日韩欧美国产一区在线观看| 欧美日韩国产综合一区二区三区| 欧美一区永久视频免费观看| 99精品黄色片免费大全| 高清在线成人网| 国产精品一二一区| 久久成人免费日本黄色| 日韩av网站免费在线| 性做久久久久久免费观看欧美| 亚洲精品国产无天堂网2021| 综合在线观看色| 国产精品成人免费| 国产精品久久久久久妇女6080 | 国产欧美日韩另类一区| 精品国精品国产| 欧美成人官网二区| 欧美va在线播放| 精品国产乱码久久久久久闺蜜| 日韩一区二区视频在线观看| 91精品欧美综合在线观看最新| 欧美日韩日日摸| 欧美日韩日本视频| 91精品国产高清一区二区三区蜜臀 | 欧美一区二区三区免费观看视频| 欧美日韩1区2区| 欧美不卡在线视频| 精品福利一区二区三区免费视频| 日韩精品影音先锋| 欧美mv和日韩mv国产网站| 亚洲精品一区二区三区影院| 久久美女艺术照精彩视频福利播放| 久久久久久久久久久久久夜| 国产精品人人做人人爽人人添| 国产精品欧美一区二区三区| **网站欧美大片在线观看| 亚洲精品视频免费看| 亚洲香蕉伊在人在线观| 免费亚洲电影在线| 国产精品综合二区| 91浏览器打开| 制服丝袜av成人在线看| 久久久夜色精品亚洲| 亚洲欧洲韩国日本视频| 日本午夜一本久久久综合| 国产麻豆午夜三级精品| 色综合色综合色综合色综合色综合| 在线这里只有精品| 欧美成人国产一区二区| 国产精品久久久久久久久久久免费看 | 中文字幕综合网| 亚洲成人黄色影院| 国产毛片精品国产一区二区三区| 一道本成人在线| 日韩欧美一区二区久久婷婷| 国产精品久久午夜夜伦鲁鲁| 亚洲va韩国va欧美va| 成人做爰69片免费看网站| 在线不卡中文字幕| 亚洲图片欧美激情| 国产乱子伦一区二区三区国色天香| 91麻豆成人久久精品二区三区| 欧美一级免费大片|