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

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

?? spstring.h

?? 股票軟件
?? H
字號:
/*
	Cross Platform Core Code.

	Copyright(R) 2001-2002 Balang Software.
	All rights reserved.

	Using:
		class	CSPString;
				like CString
*/

#if	!defined( __SP_STRING_H__)
#define	__SP_STRING_H__

#include	<TCHAR.h>

/////////////////////////////////////////////////////////////////////////////
// CSPString

struct CSPStringData
{
	long nRefs;             // reference count
	int nDataLength;        // length of data (including terminator)
	int nAllocLength;       // length of allocation
	// TCHAR data[nAllocLength]

	TCHAR* data()           // TCHAR* to managed data
		{ return (TCHAR*)(this+1); }
};

class CSPString
{
public:
// Constructors

	// constructs empty CSPString
	CSPString();
	// copy constructor
	CSPString(const CSPString& stringSrc);
	// from a single character
	CSPString(TCHAR ch, int nRepeat = 1);
	// from an ANSI string (converts to TCHAR)
	CSPString(LPCSTR lpsz);
	// from a UNICODE string (converts to TCHAR)
	CSPString(LPCWSTR lpsz);
	// subset of characters from an ANSI string (converts to TCHAR)
	CSPString(LPCSTR lpch, int nLength);
	// subset of characters from a UNICODE string (converts to TCHAR)
	CSPString(LPCWSTR lpch, int nLength);
	// from unsigned characters
	CSPString(const unsigned char* psz);

// Attributes & Operations

	// get data length
	int GetLength() const;
	// TRUE if zero length
	BOOL IsEmpty() const;
	// clear contents to empty
	void Empty();

	// return single character at zero-based index
	TCHAR GetAt(int nIndex) const;
	// return single character at zero-based index
	TCHAR operator[](int nIndex) const;
	// set a single character at zero-based index
	void SetAt(int nIndex, TCHAR ch);
	// return pointer to const string
	operator LPCTSTR() const;

	// overloaded assignment

	// ref-counted copy from another CSPString
	const CSPString& operator=(const CSPString& stringSrc);
	// set string content to single character
	const CSPString& operator=(TCHAR ch);
#ifdef _UNICODE
	const CSPString& operator=(char ch);
#endif
	// copy string content from ANSI string (converts to TCHAR)
	const CSPString& operator=(LPCSTR lpsz);
	// copy string content from UNICODE string (converts to TCHAR)
	const CSPString& operator=(LPCWSTR lpsz);
	// copy string content from unsigned chars
	const CSPString& operator=(const unsigned char* psz);

	// string concatenation

	// concatenate from another CSPString
	const CSPString& operator+=(const CSPString& string);

	// concatenate a single character
	const CSPString& operator+=(TCHAR ch);
#ifdef _UNICODE
	// concatenate an ANSI character after converting it to TCHAR
	const CSPString& operator+=(char ch);
#endif
	// concatenate a UNICODE character after converting it to TCHAR
	const CSPString& operator+=(LPCTSTR lpsz);

		friend CSPString __stdcall operator+(const CSPString& string1,
			const CSPString& string2);
		friend CSPString __stdcall operator+(const CSPString& string, TCHAR ch);
		friend CSPString __stdcall operator+(TCHAR ch, const CSPString& string);
#ifdef _UNICODE
		friend CSPString __stdcall operator+(const CSPString& string, char ch);
		friend CSPString __stdcall operator+(char ch, const CSPString& string);
#endif
		friend CSPString __stdcall operator+(const CSPString& string, LPCTSTR lpsz);
		friend CSPString __stdcall operator+(LPCTSTR lpsz, const CSPString& string);

	// string comparison

	// straight character comparison
	int Compare(LPCTSTR lpsz) const;
	// compare ignoring case
	int CompareNoCase(LPCTSTR lpsz) const;
	// NLS aware comparison, case sensitive
	int Collate(LPCTSTR lpsz) const;
	// NLS aware comparison, case insensitive
	int CollateNoCase(LPCTSTR lpsz) const;

	// simple sub-string extraction

	// return nCount characters starting at zero-based nFirst
	CSPString Mid(int nFirst, int nCount) const;
	// return all characters starting at zero-based nFirst
	CSPString Mid(int nFirst) const;
	// return first nCount characters in string
	CSPString Left(int nCount) const;
	// return nCount characters from end of string
	CSPString Right(int nCount) const;

	//  characters from beginning that are also in passed string
	CSPString SpanIncluding(LPCTSTR lpszCharSet) const;
	// characters from beginning that are not also in passed string
	CSPString SpanExcluding(LPCTSTR lpszCharSet) const;

	// upper/lower/reverse conversion

	// NLS aware conversion to uppercase
	void MakeUpper();
	// NLS aware conversion to lowercase
	void MakeLower();
	// reverse string right-to-left
	void MakeReverse();

	// trimming whitespace (either side)

	// remove whitespace starting from right edge
	void TrimRight();
	// remove whitespace starting from left side
	void TrimLeft();

	// trimming anything (either side)

	// remove continuous occurrences of chTarget starting from right
	void TrimRight(TCHAR chTarget);
	// remove continuous occcurrences of characters in passed string,
	// starting from right
	void TrimRight(LPCTSTR lpszTargets);
	// remove continuous occurrences of chTarget starting from left
	void TrimLeft(TCHAR chTarget);
	// remove continuous occcurrences of characters in
	// passed string, starting from left
	void TrimLeft(LPCTSTR lpszTargets);

	// advanced manipulation

	// replace occurrences of chOld with chNew
	int Replace(TCHAR chOld, TCHAR chNew);
	// replace occurrences of substring lpszOld with lpszNew;
	// empty lpszNew removes instances of lpszOld
	int Replace(LPCTSTR lpszOld, LPCTSTR lpszNew);
	// remove occurrences of chRemove
	int Remove(TCHAR chRemove);
	// insert character at zero-based index; concatenates
	// if index is past end of string
	int Insert(int nIndex, TCHAR ch);
	// insert substring at zero-based index; concatenates
	// if index is past end of string
	int Insert(int nIndex, LPCTSTR pstr);
	// delete nCount characters starting at zero-based index
	int Delete(int nIndex, int nCount = 1);

	// searching

	// find character starting at left, -1 if not found
	int Find(TCHAR ch) const;
	// find character starting at right
	int ReverseFind(TCHAR ch) const;
	// find character starting at zero-based index and going right
	int Find(TCHAR ch, int nStart) const;
	// find first instance of any character in passed string
	int FindOneOf(LPCTSTR lpszCharSet) const;
	// find first instance of substring
	int Find(LPCTSTR lpszSub) const;
	// find first instance of substring starting at zero-based index
	int Find(LPCTSTR lpszSub, int nStart) const;

	// simple formatting

	// printf-like formatting using passed string
	void __cdecl Format(LPCTSTR lpszFormat, ...);
	// printf-like formatting using referenced string resource
	void __cdecl Format(UINT nFormatID, ...);
	// printf-like formatting using variable arguments parameter
	void FormatV(LPCTSTR lpszFormat, va_list argList);

	// load from string resource
	BOOL LoadString(UINT nID);

	// Access to string implementation buffer as "C" character array

	// get pointer to modifiable buffer at least as long as nMinBufLength
	LPTSTR GetBuffer(int nMinBufLength);
	// release buffer, setting length to nNewLength (or to first nul if -1)
	void ReleaseBuffer(int nNewLength = -1);
	// get pointer to modifiable buffer exactly as long as nNewLength
	LPTSTR GetBufferSetLength(int nNewLength);
	// release memory allocated to but unused by string
	void FreeExtra();

	// Use LockBuffer/UnlockBuffer to turn refcounting off

	// turn refcounting back on
	LPTSTR LockBuffer();
	// turn refcounting off
	void UnlockBuffer();

// Implementation
public:
	~CSPString();
	int GetAllocLength() const;

protected:
	LPTSTR m_pchData;   // pointer to ref counted string data

	// implementation helpers
	CSPStringData* GetData() const;
	void Init();
	void AllocCopy(CSPString& dest, int nCopyLen, int nCopyIndex, int nExtraLen) const;
	void AllocBuffer(int nLen);
	void AssignCopy(int nSrcLen, LPCTSTR lpszSrcData);
	void ConcatCopy(int nSrc1Len, LPCTSTR lpszSrc1Data, int nSrc2Len, LPCTSTR lpszSrc2Data);
	void ConcatInPlace(int nSrcLen, LPCTSTR lpszSrcData);
	void CopyBeforeWrite();
	void AllocBeforeWrite(int nLen);
	void Release();
	static void PASCAL Release(CSPStringData* pData);
	static int PASCAL SafeStrlen(LPCTSTR lpsz);
	static void __fastcall FreeData(CSPStringData* pData);
};

// Compare helpers
bool __stdcall operator==(const CSPString& s1, const CSPString& s2);
bool __stdcall operator==(const CSPString& s1, LPCTSTR s2);
bool __stdcall operator==(LPCTSTR s1, const CSPString& s2);
bool __stdcall operator!=(const CSPString& s1, const CSPString& s2);
bool __stdcall operator!=(const CSPString& s1, LPCTSTR s2);
bool __stdcall operator!=(LPCTSTR s1, const CSPString& s2);
bool __stdcall operator<(const CSPString& s1, const CSPString& s2);
bool __stdcall operator<(const CSPString& s1, LPCTSTR s2);
bool __stdcall operator<(LPCTSTR s1, const CSPString& s2);
bool __stdcall operator>(const CSPString& s1, const CSPString& s2);
bool __stdcall operator>(const CSPString& s1, LPCTSTR s2);
bool __stdcall operator>(LPCTSTR s1, const CSPString& s2);
bool __stdcall operator<=(const CSPString& s1, const CSPString& s2);
bool __stdcall operator<=(const CSPString& s1, LPCTSTR s2);
bool __stdcall operator<=(LPCTSTR s1, const CSPString& s2);
bool __stdcall operator>=(const CSPString& s1, const CSPString& s2);
bool __stdcall operator>=(const CSPString& s1, LPCTSTR s2);
bool __stdcall operator>=(LPCTSTR s1, const CSPString& s2);

// Globals
extern  TCHAR afxSPChNil;
#ifdef _AFXDLL
const CSPString& __stdcall AfxGetEmptySPString();
#define afxEmptySPString AfxGetEmptySPString()
#else
extern LPCTSTR _afxSPPchNil;
#define afxEmptySPString ((CSPString&)*(CSPString*)&_afxSPPchNil)
#endif

#ifdef	_SP_ENABLE_INLINES
#define	_SPSTRING_INLINE	inline
#include "SpString.inl"
#undef	_SPSTRING_INLINE
#endif

#endif //__SP_STRING_H__

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美三级资源在线| 综合亚洲深深色噜噜狠狠网站| 久久一区二区三区四区| 亚洲精品乱码久久久久| 激情五月婷婷综合| 欧美日韩欧美一区二区| 中文字幕一区二区三区色视频| 天涯成人国产亚洲精品一区av| 成人午夜av电影| 欧美一级高清大全免费观看| 成人免费在线视频| 国产一区二区福利| 欧美一区二区三区视频| 一区二区三区日韩欧美| 成人aa视频在线观看| 亚洲精品一区二区精华| 日本中文一区二区三区| 欧美色偷偷大香| 亚洲欧美一区二区三区孕妇| 处破女av一区二区| 欧美国产成人精品| 国产精品综合二区| 久久久久国产精品麻豆ai换脸 | 亚洲国产乱码最新视频| 成人午夜视频在线| 国产日韩精品一区二区三区| 国产成人在线网站| 国产视频一区二区在线| 国产98色在线|日韩| 国产亚洲精品中文字幕| 国产成人在线观看免费网站| 国产人伦精品一区二区| 成人影视亚洲图片在线| 国产精品视频一二三区| 国产aⅴ精品一区二区三区色成熟| 337p粉嫩大胆色噜噜噜噜亚洲| 美女视频网站久久| 精品福利一二区| 国产二区国产一区在线观看| 国产欧美一区二区精品忘忧草| 国产一区二区三区免费播放| 国产亚洲午夜高清国产拍精品| 国产一区日韩二区欧美三区| 亚洲国产高清在线| 91在线视频免费观看| 一区二区三区四区国产精品| 欧美日韩成人在线一区| 久久99国内精品| 国产日韩欧美在线一区| 9l国产精品久久久久麻豆| 一区二区三区四区乱视频| 欧美乱妇23p| 麻豆91在线播放| 欧美国产丝袜视频| 在线免费一区三区| 人人超碰91尤物精品国产| 久久久精品免费免费| 99精品一区二区三区| 亚洲成人免费av| 久久久久久久久久久久久女国产乱| 成人av综合在线| 婷婷久久综合九色国产成人| 久久日一线二线三线suv| 成人动漫av在线| 亚洲va欧美va人人爽| 国产欧美一区二区在线| 欧美亚洲综合久久| 韩国午夜理伦三级不卡影院| 亚洲激情在线播放| 久久综合狠狠综合久久综合88| 91女神在线视频| 免费成人在线观看视频| 综合电影一区二区三区 | 欧美在线观看18| 久久国产精品一区二区| 亚洲日本一区二区| 欧美xingq一区二区| 在线精品视频免费观看| 国产一区二区91| 午夜精品爽啪视频| 自拍偷拍亚洲激情| 久久久99久久| 日韩色在线观看| 在线观看国产日韩| 成人免费视频免费观看| 久久99精品久久久| 午夜视黄欧洲亚洲| 一区二区三区国产| 国产精品久久久久久久久久久免费看| 制服丝袜国产精品| 色狠狠av一区二区三区| a美女胸又www黄视频久久| 激情综合网激情| 免费在线一区观看| 亚洲国产成人91porn| 亚洲欧洲韩国日本视频| 国产三级三级三级精品8ⅰ区| 欧美一区二区日韩一区二区| 日本丰满少妇一区二区三区| 99国产精品久久久久久久久久久| 国产成人在线视频免费播放| 精品一区二区三区在线播放视频 | 亚洲日本韩国一区| 欧美极品aⅴ影院| 国产日韩欧美综合在线| 2欧美一区二区三区在线观看视频| 欧美三级中文字幕在线观看| 在线观看日韩高清av| 成人av电影在线播放| 成人激情黄色小说| 成人黄色777网| 成人av在线播放网址| 成人av片在线观看| 色综合天天综合狠狠| 91麻豆国产自产在线观看| 成人av动漫在线| 91色视频在线| 欧美怡红院视频| 欧美精品在线一区二区| 欧美福利视频一区| 日韩一级片在线观看| 日韩精品综合一本久道在线视频| 欧美一级一级性生活免费录像| 欧美一二三区精品| 精品国产一区二区精华| 久久精品一区二区三区不卡| 国产女人水真多18毛片18精品视频| 日本一区二区免费在线观看视频| 国产精品理论在线观看| 亚洲另类在线制服丝袜| 亚洲午夜一二三区视频| 青青草97国产精品免费观看| 久久精品国产澳门| 成人综合在线视频| 在线观看区一区二| 精品国产麻豆免费人成网站| 国产欧美一区二区三区网站| 亚洲欧美另类小说| 午夜精品免费在线| 国产成人啪午夜精品网站男同| 成人激情视频网站| 欧美顶级少妇做爰| 337p粉嫩大胆噜噜噜噜噜91av| 国产精品私人影院| 亚洲午夜在线视频| 国产福利不卡视频| 在线国产电影不卡| 久久免费国产精品| 亚洲一区二区3| 国产九色精品成人porny | 日韩欧美国产高清| 中文欧美字幕免费| 丝袜亚洲另类丝袜在线| 高清不卡一区二区| 69堂成人精品免费视频| 国产欧美日韩另类视频免费观看 | 一区二区三区资源| 国产一区二区三区久久久| 色网综合在线观看| 精品国产乱码久久久久久久久| 亚洲欧美综合在线精品| 麻豆国产精品一区二区三区 | 一区二区视频在线看| 精品在线观看视频| 欧美主播一区二区三区| 国产日本一区二区| 久久国产婷婷国产香蕉| 欧美日韩午夜影院| 亚洲日本在线视频观看| 国产精品888| 91精品啪在线观看国产60岁| 亚洲黄色尤物视频| 成人av影视在线观看| 精品久久久网站| 午夜欧美一区二区三区在线播放| 成人午夜碰碰视频| 精品免费国产一区二区三区四区| 亚洲综合小说图片| 一本大道综合伊人精品热热| 欧美经典一区二区| 国产精品自拍三区| wwwwxxxxx欧美| 蜜臀91精品一区二区三区| 欧美日韩免费观看一区二区三区 | 欧美日韩一区久久| 亚洲精品福利视频网站| 成人av资源站| 国产精品理论片| 成人免费看黄yyy456| 国产婷婷色一区二区三区四区| 久久国内精品自在自线400部| 91精品国产欧美一区二区| 亚洲va欧美va人人爽| 欧美乱熟臀69xxxxxx| 日韩精品亚洲一区二区三区免费| 欧美在线观看你懂的| 亚洲成人tv网| 日韩一区国产二区欧美三区| 免费视频一区二区| 日韩欧美国产电影|