c++ string类实现源码
以下是一个简单的C++ String类的实现源码示例:
#include <iostream>
class String {
private:
char* m_data;
int m_length;
public:
String() {
m_data = nullptr;
m_length = 0;
}
String(const char* data) {
m_length = strlen(data);
m_data = new char[m_length + 1];
strcpy(m_data, data);
}
String(const String& other) {
m_length = other.m_length;
m_data = new char[m_length + 1];
strcpy(m_data, other.m_data);
}
~String() {
delete[] m_data;
}
int length() const {
return m_length;
}
const char* c_str() const {
return m_data;
}
String& operator=(const String& other) {
if (this != &other) {
delete[] m_data;
m_length = other.m_length;
m_data = new char[m_length + 1];
strcpy(m_data, other.m_data);
}
return *this;
}
String operator+(const String& other) const {
String result;
result.m_length = m_length + other.m_length;
result.m_data = new char[result.m_length + 1];
strcpy(result.m_data, m_data);
strcat(result.m_data, other.m_data);
return result;
}
bool operator==(const String& other) const {
return (strcmp(m_data, other.m_data) == 0);
}
};
int main() {
String s1 = "Hello";
String s2 = " World";
String s3 = s1 + s2;
std::cout << "s1: " << s1.c_str() << std::endl;
std::cout << "s2: " << s2.c_str() << std::endl;
std::cout << "s3: " << s3.c_str() << std::endl;
if (s1 == s2) {
std::cout << "s1 and s2 are equal" << std::endl;
} else {
std::cout << "s1 and s2 are not equal" << std::endl;
}
return 0;
}
这个String类实现了字符串的基本操作,包括构造函数、析构函数、赋值运算符重载、拼接运算符重载和相等运算符重载。它使用动态分配的字符数组来存储字符串,并提供了获取字符串长度和以C风格字符串的形式返回字符串的方法
原文地址: https://www.cveoy.top/t/topic/hPSL 著作权归作者所有。请勿转载和采集!