CString

这篇博客详细介绍了 CString 类型的使用,包括基本操作、字符串拼接、查找与替换等核心功能。适合 C++ 初学者和希望深入理解 CString 的开发者阅读。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#define BOOL int
#define UINT unsigned int
#define CINT const int

#define PCHAR const char*

class CString
{
	private:
		char *m_str;
		int m_size;
	public:
		CString(void);
		CString(CINT nSize);
		CString(const char *str);
		CString(const char str);
		~CString();

		//清空字符串
		void RemoveAll();

		//返回字符串
		operator char*();
		//賦值
		void operator=(CString str);

		//獲取字符串個數
		int GetSize()const;
		//獲取從右邊第一個開始到nCount個的字符串
		CString GetRightStr(CINT nCount);
		//獲取左邊第一個到nCount個的字符串
		CString GetLeftStr(CINT nCount);
		//獲取第nLeft個到nRight個字符串
		CString GetLeftToRightStr(CINT nLeft,CINT nRight);

		//不區分大小寫的比較大小
		BOOL Compare(const CString &str);
		//區分大小寫的比較大小
		BOOL CompareLowerCare(const CString &str);

		//將大寫轉成小寫
		CString SetBigToSmall()const;
		//將小寫轉成大寫
		CString SetSmallToBig()const;
	private:
		int strlen(const char *str);
		void strcpy(char *NewStr,const char* OldStr);
		BOOL strcmp(const char *str1,const char *str2);
};

CString::CString(void)
{
	m_size = 0;
	m_str = new char[2];
	m_str[1] = '\0';
}

CString::CString(const char *str)
{
	m_size = strlen(str);
	m_str = new char[m_size+1];
	strcpy(m_str,str);
}

CString::CString(CINT nSize)
{
	m_size = nSize;
	m_str = new char[m_size];
}

CString::CString(char str)
{
	m_size = 1;
	m_str = new char[2];
	m_str[0] = str;
	m_str[1] = '\0';
}

CString::~CString()
{
	RemoveAll();
}

CString::operator char*()
{
	return m_str;
}

void CString::operator=(CString str)
{
	RemoveAll();
	m_size = str.GetSize();
	m_str = new char[m_size];
	strcpy(m_str,str);
}

int CString::GetSize()const
{
	return m_size;
}

CString CString::GetRightStr(CINT nCount)
{
	//方法一:
//	char *str = new char[nCount];
//	str[nCount] = '\0';
//	for(int i = 1;i <= nCount;i++)
//		str[nCount-i] = m_str[m_size-i];
//	return str;

	return GetLeftToRightStr(m_size-nCount,m_size);
}

CString CString::GetLeftStr(CINT nCount)
{
	//方法一:
//	char *str = new char[nCount];
//	int i = -1;
//	while(nCount > ++i)
//		str[i] = m_str[i];
//	str[i] = '\0';
//	return str;

	return GetLeftToRightStr(0,nCount);
}

CString CString::GetLeftToRightStr(CINT nLeft,CINT nRight)
{
	int i = nRight - nLeft + 1;
	char *str = new char[i];
	str[i+1] = '\0';
	while(-1 < --i)
		str[i] = m_str[nLeft + i];
	return str;
}

BOOL CString::Compare(const CString &str)
{
	CString t = SetBigToSmall();
	CString text = str.SetBigToSmall();
	return strcmp(t , text.m_str);
}

BOOL CString::CompareLowerCare(const CString &str)
{
	return strcmp(m_str,str.m_str);
}

CString CString::SetBigToSmall()const
{
	char *text = m_str;
	int i = -1;
	while(m_size > ++i)
		if(65 <= text[i] && 90 >= text[i])
			text[i] = text[i] + 32;
	return text;
}

CString CString::SetSmallToBig()const
{
	char *text = m_str;
	int i = -1;
	while(m_size > ++i)
		if(97 <= text[i] && 122 >= text[i])
			text[i] = text[i] - 32;
	return text;
}

void CString::RemoveAll()
{
	delete []m_str;
	m_size = 0;
}

int CString::strlen(const char *str)
{
	int i = 0;
	while(str[i])
		i++;
	return i;
}

void CString::strcpy(char *NewStr,const char* OldStr)
{
	int i = strlen(OldStr);
	NewStr[i] = '\0';
	while(-1 < i--)
		NewStr[i] = OldStr[i];
}

BOOL CString::strcmp(const char* str1,const char *str2)
{
	int size1 = strlen(str1) , size2 = strlen(str2);
	if(size1 > size2)
		return -1;
	else if(size1 < size2)
		return 1;
	else
	{
		int i = -1;
		while(size1 > ++i)
		{
			if(str1[i] > str2[i])
				return -1;
			else if(str1[i] < str2[i])
				return 1;
		}
	}
	return 0;
}

说明文档:https://note.youdao.com/web/#/file/WEB7f79d580b25eb56de92b2d88b60adb08/note/6A1B9C70704F4DC5B5B808C8BAF62760/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值