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 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步