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

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

?? vostring.cpp

?? Windows CE下操作、顯示圖像的類。可以打開、顯示png、gif、jpg等系統(tǒng)支持的格式。
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
?//-------------------------------------------------------------------
// VOString implementation file
//-------------------------------------------------------------------
//
// Copyright ?000- 02 Virtual Office Systems Incorporated
// All Rights Reserved
//
// This code may be used in compiled form in any way you desire. This
// file may be redistributed unmodified by any means PROVIDING it is
// not sold for profit without the authors written consent, and
// providing that this notice and the authors name is included.
//
// This code can be compiled, modified and distributed freely, providing
// that this copyright information remains intact in the distribution.
//
// This code may be compiled in original or modified form in any private
// or commercial application.
//
// This file is provided "as is" with no expressed or implied warranty.
// The author accepts no liability for any damage, in any form, caused
// by this code. Use it at your own risk.
//-------------------------------------------------------------------

#include "stdafx.h"
#include "VOString.h"


//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

CVOString::CVOString(LPCTSTR pcszValue)
		: m_pBuffer(NULL),
		m_dwLength(0),
		m_dwBufferSize(0)
{
	*this = pcszValue;
}

// Copy Constructor
CVOString::CVOString(const CVOString &rSrc)
		: m_pBuffer(NULL),
		m_dwLength(0),
		m_dwBufferSize(0)
{
	*this = rSrc.m_pBuffer;
}

CVOString::~CVOString()
{
	if (m_pBuffer)
	{
		delete [] m_pBuffer;
	}
}

void CVOString::operator = (const CVOString& rSrc)
{
	if ( &rSrc != this )
	{
		*this = rSrc.m_pBuffer;
	}
}

void CVOString::operator = (LPCTSTR pcszValue)
{
	if (pcszValue == NULL)
	{
		m_dwLength = 0;

		if (m_pBuffer)
		{
			delete [] m_pBuffer;
			m_pBuffer = NULL;
		}
	}
	else
	{
		m_dwLength = _tcslen(pcszValue);

		SetMinBufferSize(m_dwLength);

		if (m_dwLength == 0)
		{
			m_pBuffer[0] = TCHAR(0);
		}
		else
		{
			_tcscpy(m_pBuffer, pcszValue);
		}
	}
}

BOOL CVOString::operator == (LPCTSTR pcszValue) const
{
	if (!m_pBuffer)
	{
		if (!pcszValue)
		{
			return TRUE;
		}

		return (_tcsicmp(pcszValue, TEXT("")) == 0);
	}

	return(_tcsicmp(pcszValue, m_pBuffer) == 0);
}

BOOL CVOString::operator == (const CVOString& rCompare) const
{
	if (!m_pBuffer)
	{
		if (rCompare.GetLength() == 0)
		{
			return TRUE;
		}
		else
		{
			return FALSE;
		}
	}

	if (!rCompare.m_pBuffer)
	{
		return FALSE;
	}

	return(_tcsicmp(rCompare.m_pBuffer, m_pBuffer) == 0);
}

LPCTSTR CVOString::operator += (LPCTSTR pcszAppend)
{
	if (m_pBuffer)
	{
		SetMinBufferSize(GetLength() + _tcslen(pcszAppend));
		_tcscat(m_pBuffer, pcszAppend);
		m_dwLength = _tcslen(m_pBuffer);
	}
	else
	{
		*this = pcszAppend;
	}

	return *this;
}

LPCTSTR CVOString::operator += (TCHAR chAppend)
{
	SetMinBufferSize(m_dwLength + 2);
	m_dwLength++;
	m_pBuffer[m_dwLength] = 0;
	m_pBuffer[m_dwLength - 1] = chAppend;

	return *this;
}

CVOString CVOString::operator + (LPCTSTR pcszAppend) const
{
	CVOString strReturn(*this);

	strReturn += pcszAppend;

	return strReturn;
}

BOOL CVOString::operator != (LPCTSTR pcszValue) const
{
	return operator ==(pcszValue) == 0;
}

BOOL CVOString::operator != (const CVOString& rValue) const
{
	return operator ==(rValue) == 0;
}

CVOString::operator LPCTSTR() const
{
	return (LPCTSTR)m_pBuffer;
}

DWORD CVOString::GetLength() const
{
	return m_dwLength;
}

BOOL CVOString::SetMinBufferSize(DWORD dwChars)
{
#ifdef _DEBUG
	if (dwChars > 65536)
	{
		DebugBreak();	// This is just a precaution to protect against memory leaks.  Large strings are fine.
	}
#endif
	if ( (m_dwBufferSize < dwChars + 1) || (m_pBuffer == NULL) )
	{
		TCHAR*	pNewBuffer = NULL;
		DWORD	dwNewBufferSize = dwChars + 16;

		pNewBuffer = new TCHAR[dwNewBufferSize];

		memset(pNewBuffer, 0, sizeof(TCHAR) * dwNewBufferSize);

		if ( m_pBuffer )
		{
			memmove(pNewBuffer, m_pBuffer, m_dwBufferSize * sizeof(TCHAR));
			delete [] m_pBuffer;
		}

		m_pBuffer = pNewBuffer;

		m_dwBufferSize = dwNewBufferSize;
	}

	return TRUE;
}

TCHAR CVOString::GetAt(DWORD dwOffset) const
{
	if (dwOffset > m_dwLength - 1)
	{
		return (TCHAR) 0;
	}

	return m_pBuffer[dwOffset];
}

CVOString CVOString::Left(DWORD dwCount) const
{
	if (dwCount >= m_dwLength)
	{
		return CVOString(*this);
	}

	LPTSTR	pszTemp = new TCHAR[dwCount + 1];

	memset(pszTemp, 0, sizeof(TCHAR) * (dwCount + 1));
	memmove(pszTemp, m_pBuffer, sizeof(TCHAR) * dwCount);

	CVOString strValue(pszTemp);

	delete [] pszTemp;

	return strValue;
}

CVOString CVOString::Mid(DWORD dwOffset, int nLength) const
{
	if ( dwOffset > m_dwLength )
	{
		return CVOString(TEXT(""));
	}

	if (nLength == -1)
	{
		nLength = (int)(m_dwLength - dwOffset);
	}
	else if (dwOffset + (DWORD)nLength > m_dwLength)
	{
		nLength = (int)(m_dwLength - dwOffset);
	}

	LPTSTR	pszTemp = new TCHAR[(size_t)(nLength + 1)];

	memset(pszTemp, 0, sizeof(TCHAR) * ((size_t)nLength + 1));
	memmove(pszTemp, m_pBuffer + dwOffset, sizeof(TCHAR) * (size_t)nLength);

	CVOString strValue(pszTemp);

	delete [] pszTemp;

	return strValue;
}

LPTSTR CVOString::GetBuffer(DWORD dwMinSize)
{
	SetMinBufferSize(dwMinSize + 1);

	return m_pBuffer;
}

int CVOString::Format(LPCTSTR pcszFormat, ...)
{
	va_list vl;

	va_start( vl, pcszFormat);

	::wvsprintf(GetBuffer(256), pcszFormat, vl);
	ReleaseBuffer();

	va_end(vl);

	return (int)(GetLength());
}

int CVOString::Find(LPCTSTR pcszValue, int nStartingOffset) const
{
	LPTSTR pszSubstring;

	if (nStartingOffset < 0)
	{
		nStartingOffset = 0;
	}

	pszSubstring = _tcsstr(m_pBuffer + nStartingOffset, pcszValue);

	if (!pszSubstring)
	{
		return -1;
	}

	return (pszSubstring - m_pBuffer);
}

int CVOString::Find(TCHAR chValue, int nStartingOffset) const
{
	TCHAR pcszValue[2];

	pcszValue[0] = chValue;
	pcszValue[1] = 0;

	return Find(pcszValue, nStartingOffset);
}

int CVOString::ReverseFind(LPCTSTR pcszSubstring) const
{
	int nOffset = -1, nNextOffset = 0;

	while ((nNextOffset = Find(pcszSubstring, nNextOffset)) != -1)
	{
		nOffset = nNextOffset++;
	}

	return nOffset;
}

DWORD CVOString::ReleaseBuffer(int nChars)
{
	if ((m_pBuffer == NULL) || (m_dwBufferSize == 0))
	{
		return 0;
	}

	if (nChars == -1)
	{
		m_dwLength = _tcslen(m_pBuffer);
	}
	else
	{
		m_dwLength = (DWORD) nChars;

		if (m_dwLength > m_dwBufferSize)
		{
			m_dwLength = m_dwBufferSize;
		}

		m_pBuffer[m_dwLength] = 0;
	}

	return m_dwLength;
}

const CVOString& CVOString::TrimRight()
{
	while (GetLength() && GetAt(GetLength() - 1) == TCHAR(' '))
	{
		*this = Left(GetLength() - 1);
	}

	return *this;
}

const CVOString& CVOString::TrimLeft()
{
	while (GetLength() && GetAt(0) == TCHAR(' '))
	{
		*this = Mid(1);
	}

	return *this;
}

const CVOString& CVOString::Trim()
{
	TrimLeft();

	return TrimRight();
}

CVOString CVOString::Right(int nChars) const
{
	if ((int)GetLength() < nChars)
	{
		return *this;
	}

	return Mid(GetLength() - (DWORD)nChars);
}

void CVOString::MakeMixedCase()
{
	BOOL fFirstWord = TRUE;

	for (int i = 0; i < (int)GetLength(); ++i)
	{
		if ( (m_pBuffer[i] >= TCHAR('a') && m_pBuffer[i] <= TCHAR('z')) ||
			(m_pBuffer[i] >= TCHAR('A') && m_pBuffer[i] <= TCHAR('Z')) )	// Start of Word
		{
			int nWordEnd = i;

			while (	(m_pBuffer[nWordEnd] >= TCHAR('a') && m_pBuffer[nWordEnd] <= TCHAR('z')) ||
				(m_pBuffer[nWordEnd] >= TCHAR('A') && m_pBuffer[nWordEnd] <= TCHAR('Z')) )
			{
				nWordEnd++;
			}

			CVOString strWord;

			strWord = Mid((DWORD)i, nWordEnd - i);
			strWord.MakeLower();

			BOOL fCapitalize = FALSE;

			if (fFirstWord)
			{
				fCapitalize = TRUE;
				fFirstWord = FALSE;
			}
			else
			{
				fCapitalize = TRUE;

				if (strWord == TEXT("a"))
				{
					fCapitalize = FALSE;
				}
				else if (strWord == TEXT("an"))
				{
					fCapitalize = FALSE;
				}
				else if (strWord == TEXT("the"))
				{
					fCapitalize = FALSE;
				}
				else if (strWord == TEXT("and"))
				{
					fCapitalize = FALSE;
				}
				else if (strWord == TEXT("but"))
				{
					fCapitalize = FALSE;
				}
				else if (strWord == TEXT("or"))
				{
					fCapitalize = FALSE;
				}
				else if (strWord == TEXT("nor"))
				{
					fCapitalize = FALSE;
				}
				else if (strWord == TEXT("at"))
				{
					fCapitalize = FALSE;
				}
				else if (strWord == TEXT("by"))
				{
					fCapitalize = FALSE;
				}
				else if (strWord == TEXT("for"))
				{
					fCapitalize = FALSE;
				}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
在线综合视频播放| 精品一区二区三区欧美| 99精品视频一区| 国产精品福利电影一区二区三区四区| 久久福利视频一区二区| 26uuu成人网一区二区三区| 国产又粗又猛又爽又黄91精品| 亚洲精品在线电影| 国产成人亚洲综合色影视| 国产日产欧产精品推荐色| av午夜一区麻豆| 亚洲午夜激情av| 日韩一区二区精品在线观看| 国产精品综合av一区二区国产馆| 国产欧美一区二区三区网站| 91老师国产黑色丝袜在线| 亚洲午夜在线电影| 欧美一级电影网站| 国产99一区视频免费| 一区二区三区欧美久久| 日韩欧美电影一二三| 国产白丝精品91爽爽久久| 亚洲精品视频在线观看免费| 欧美色窝79yyyycom| 亚洲午夜视频在线观看| 在线综合亚洲欧美在线视频| 国产一区二区女| 国产精品超碰97尤物18| 欧美日韩国产不卡| 国产激情一区二区三区四区| 亚洲人被黑人高潮完整版| 欧美精品在线观看一区二区| 国产电影精品久久禁18| 亚洲自拍偷拍图区| 久久久久久免费网| 欧美日韩亚洲另类| jvid福利写真一区二区三区| 日韩av中文字幕一区二区| 国产精品久久久久国产精品日日| 欧美精品日韩精品| 成人av网在线| 蜜桃久久av一区| 亚洲男人的天堂av| 国产无一区二区| 91精品国产综合久久久久久漫画 | 91精品在线麻豆| 国模无码大尺度一区二区三区| 亚洲日本在线视频观看| 欧美一区二区日韩| 日本韩国欧美一区| 国产sm精品调教视频网站| 午夜精品123| 亚洲欧美一区二区三区极速播放 | av一区二区三区四区| 久久国产精品露脸对白| 亚洲欧美日韩中文字幕一区二区三区| 精品国产免费一区二区三区香蕉| 色综合久久久久网| 99国产精品99久久久久久| 国产一区二区在线观看免费 | 欧美日韩1区2区| 色综合久久久久综合| 成人三级伦理片| 美日韩一区二区三区| 日日夜夜一区二区| 亚洲精品日产精品乱码不卡| 国产人成一区二区三区影院| 日韩欧美国产综合一区| 欧美日韩一级大片网址| 色哟哟国产精品| 国产福利精品一区二区| 韩国精品主播一区二区在线观看 | 在线看一区二区| 91丨porny丨在线| 国产成人亚洲综合a∨婷婷 | 99精品久久久久久| 成人av免费在线播放| 国产一区二区三区免费| 狠狠狠色丁香婷婷综合激情 | 天天操天天色综合| 亚洲v中文字幕| 亚洲成人自拍偷拍| 亚洲成人www| 亚洲二区视频在线| 亚洲国产日韩av| 亚洲高清不卡在线| 亚洲综合激情小说| 婷婷成人激情在线网| 午夜电影网一区| 日韩在线卡一卡二| 免费在线成人网| 久久精品国产999大香线蕉| 激情综合色播激情啊| 久草这里只有精品视频| 国产一区在线不卡| 91在线免费视频观看| 色欧美乱欧美15图片| 欧美日韩中文字幕精品| 欧美日韩国产综合草草| 欧美日韩国产一区二区三区地区| 欧美系列一区二区| 欧美三级欧美一级| 精品国产第一区二区三区观看体验 | 6080午夜不卡| 久久精品亚洲乱码伦伦中文| 自拍偷拍亚洲欧美日韩| 亚洲二区在线视频| 寂寞少妇一区二区三区| 成人黄色a**站在线观看| 色猫猫国产区一区二在线视频| 欧美在线一二三| 欧美一区二区三区在线视频 | 国产一区二区影院| 91日韩在线专区| 在线不卡a资源高清| 久久久久久久久久久久久久久99 | 国产精品1024| 色老综合老女人久久久| 欧美日韩国产电影| 国产欧美一区二区在线| 亚洲综合在线观看视频| 激情小说欧美图片| 欧美自拍偷拍一区| 精品国产91亚洲一区二区三区婷婷| 国产精品区一区二区三| 午夜一区二区三区视频| 国产盗摄一区二区| 欧美日韩国产首页在线观看| 久久精品无码一区二区三区 | 亚洲欧洲精品天堂一级| 首页国产欧美日韩丝袜| 国产剧情一区二区三区| 在线免费不卡视频| 欧美国产国产综合| 人人精品人人爱| 色94色欧美sute亚洲线路一ni | 人人超碰91尤物精品国产| 不卡的电影网站| 精品免费日韩av| 亚洲精品va在线观看| 国产成人亚洲综合a∨婷婷| 欧美日韩一区二区在线视频| 欧美韩国日本不卡| 麻豆精品在线视频| 欧美日本高清视频在线观看| 最新久久zyz资源站| 国产福利一区二区| 日韩欧美一区电影| 天天色天天爱天天射综合| 91国产精品成人| 国产欧美视频一区二区| 国内精品嫩模私拍在线| 9191成人精品久久| 亚洲高清一区二区三区| 色狠狠色狠狠综合| 自拍偷拍亚洲激情| 99在线视频精品| 国产欧美一区二区精品婷婷| 国产一区二区三区最好精华液| 欧美三级中文字幕在线观看| 亚洲在线视频一区| 91麻豆123| 亚洲欧美一区二区久久| 成人午夜av在线| 欧美国产日韩精品免费观看| 国产麻豆精品theporn| 欧美精品一区二区久久婷婷| 精品一区精品二区高清| 日韩午夜中文字幕| 视频在线在亚洲| 777久久久精品| 日本在线不卡一区| 337p亚洲精品色噜噜| 免费av网站大全久久| 日韩一区二区三区精品视频| 美女任你摸久久| 久久久久久久久久电影| 国产精品18久久久久久久久| 欧美激情一区不卡| 成人黄色777网| 亚洲女同一区二区| 欧美日韩综合色| 美女尤物国产一区| 久久久久国产精品麻豆| 国产传媒久久文化传媒| 最新不卡av在线| 91成人在线免费观看| 天天综合日日夜夜精品| 日韩免费一区二区| 国产精品白丝jk黑袜喷水| 国产精品国产自产拍在线| 91免费视频网址| 午夜伦欧美伦电影理论片| 日韩一级黄色大片| 国产精品羞羞答答xxdd| 亚洲欧美另类综合偷拍| 91.麻豆视频| 国产91丝袜在线播放0| 亚洲黄色在线视频| 精品国产乱码久久久久久蜜臀 |