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

本文作者:Jev_0987

本文链接:https://www.cnblogs.com/jev-0987/p/17956048

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   Jev_0987  阅读(16)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起