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; // 返回本对象的引用
}