C++字符串操作函数笔记

1. strcpy()

从strSrc地址开始且含有'\0'结束符的字符串复制到strDest开始的地址空间中,返回值类型为char*

	char *strcpy( char *strDest, const char *strSrc )
	{
		assert( (strDest != NUL) && (strSrc != NULL) );
		char *address = strDest;
		while( (*strDest++ = *strSrc++) != '\0');
		return address;
	}

2. strlen()

计算给定字符串的长度

	int strlen( const char *str)
	{
		assert( str != NULL );
		int len;
		while ((*str++) != '\0')
		{
			len++;
		}
		return len;
	}

3. strcat()

把src所指字符串添加到dest结尾处

char *strcat(char *dest, const char *src)
{
	assert(dest && str);
	char *ret = dest;
	while (*dest)
	{
		dest++;
	}
	while (*dest++ = *src++);
	return ret;
}

4. strcmp()

比较两个字符串,假如有str1和str2
若 str1==str2,返回0
若 str1 < str2,返回负数
若 str1 > str2, 返回正数

int strcmp(const char *str1, const char *str2)
{
	assert(str1 && str2);
	while (*str1 && *str2 && (*str1 == *str2))
	{
		str1++;
		str2++;
	}
	return *str1 - *str2;
}

完成String的四个函数

class String
{
public:
	String(const char *str = NULL);
	String(const String &other);
	~String(void);
	String & operator=(const String &other);
private:
	char *m_data;
}
// 构造函数
String::String(const char *str)
{
	if (str == NULL)
	{
		m_data = new char[1];
		*m_data = '\0';
	} 
	else
	{
		int length = strlen(str);
		m_data = new char[length + 1];
		strcpy(m_data, str);
	}
}
// 析构函数
String::~String(void)
{
	delete[] m_data;
}
// 拷贝构造函数
String::String(const String &other)
{
	int length = strlen(other.m_data);
	m_data = new char[length + 1];
	strcpy(m_data, other.m_data);
}
// 赋值函数
String::String& operator=(const String &other)
{
	if (this == &other)
	{
		return *this;  // 检查自赋值
	}
	delete [] m_data;  // 释放原有的内存资源
	int length = strlen(other.m_data);
	m_data = new char[length + 1];
	strcpy(m_data, other.m_data);
	return *this;  // 返回本对象的引用
}
posted @ 2024-01-10 10:53  Jev_0987  阅读(14)  评论(0编辑  收藏  举报