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

📄 knstring.h

📁 本源码为移动公司话费查询中间件TUXEDO使用的实例
💻 H
字号:
/********************************************
//file name :SFString.h
//date: 2001.07.13
//用途:管理指定的字符串的头指针和长度
********************************************/
#if !defined(_SFSTRING_H_LINYOUHAI)
#define _SFSTRING_H_LINYOUHAI

#include "SHPP.h"

class CStrPtrLen
{
public:

	//CONSTRUCTORS/DESTRUCTOR
	//These are so tiny they can all be inlined
	CStrPtrLen() : m_pchPtr(NULL), m_unLen(0) {}
	CStrPtrLen(char* sp) : m_pchPtr(sp), m_unLen(sp != NULL ? strlen(sp) : 0) {}
	CStrPtrLen(char *sp, UInt32 len) : m_pchPtr(sp), m_unLen(len) {}
	~CStrPtrLen() {}

	//compare比较长度和内容是否完全相等
	Bool16 Equal(const CStrPtrLen &compare) const;
	Bool16 Equal(const char* compare) const;

	//在指定len的大小长度内时是否相等
	Bool16 EqualIgnoreCase(const char* compare, const UInt32 len) const;

	//判断m_pchPtr 前长度为len的compare字符串相等
	Bool16 NumEqualIgnoreCase(const char* compare, const UInt32 len) const;

	//=操作符,将newStr赋给新的CStrPtrLen类型
	CStrPtrLen& operator=(const CStrPtrLen& newStr)
	{ m_pchPtr = newStr.m_pchPtr; m_unLen = newStr.m_unLen;return *this; }

	//char操场作符,返回第i个字符字节
	char operator[](int i) { /*Assert(i<m_unLen);i*/ return m_pchPtr[i]; }

	//设置m_pchPtr与 m_unLen。
	void Set(char* inPtr, UInt32 inLen){ m_pchPtr = inPtr; m_unLen = inLen; }
	void Set(char* inPtr){ m_pchPtr = inPtr; m_unLen = strlen(inPtr); }

	//获取m_pchPtr的 m_unLen字符串且第m_unLen字节为'\0'结束
	//后一定要调用
	char* GetBuffer(UInt32 unLen = 0) const;
	void ReleaseBuffer(char* pchRel);

	//转化函数
	UInt32 Atoi();


	//比较两个串中的内容是否相等
	Bool16 operator == (const CStrPtrLen &compare) const
		{return Equal(compare);}

//成员变量:
	char*     m_pchPtr;    //指向输入串的字符指针
	UInt32	  m_unLen;     //指向输入串的字符串的长度


private:
	static UInt8 	s_chCaseInsensitiveMask[];

};

/////////////////////////////////////////////
//class CKNString
//保存以'\0'为结束的字符串

class CKNString
{
public:

	CKNString();                              //空的字符串
	CKNString(char ch,UInt32 unLen =1);       //单个字节
	CKNString(const char* psz);               //格式化一个字符串psz
	CKNString(const CKNString& stringSrc);    //copy构造器

	~CKNString();

    //返回m_unLen。
	UInt32 GetLength(){return m_unLen;}
	char* GetBuffer(UInt32 unLen = 0) const;
	//返回m_pchPtr是否为空的,为空返回1,否则为0。
	Bool16 IsEmpty() const {return (m_pchPtr ? 1 : 0);}

	//释放m_pchPtr缓存,并设置m_pchPtr为NULL
	void Empty();

	//转化化字符指针的操作符
	operator char*(){return m_pchPtr;}

	//=操作符。
	const CKNString& operator=(const CKNString& strSrc);

	const CKNString& operator=(const char* pchSrc);

	// == 比较两个CKNString 的m_pchPtr内容是否相等。
	Bool16 operator==(const CKNString& strSrc) const;


private:
	char* m_pchPtr;
	UInt32 m_unLen;

//	friend class CKNString;
};
#endif //defined(_SFSTRING_H_LINYOUHAI)

⌨️ 快捷键说明

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