#include <iostream>
#include <cstring>
class myString
{
private:
char *str; //记录c风格的字符串
int size; //记录字符串的实际长度
public:
// 无参构造
myString() : size(10)
{
str = new char[size]; //构造出一个长度为10的字符串
strcpy(str, "");
}
// 有参构造
myString(const char *s)
{
size = strlen(s);
str = new char[size + 1];
strcpy(str, s);
}
// 拷贝构造
myString(const myString &other)
{
size = other.size;
str = new char[size + 1];
strcpy(str, other.str);
}
// 析构函数
~myString()
{
delete[] str;
}
// 判空函数
bool isEmpty()
{
return size == 0;
}
// size函数
int getSize()
{
return size;
}
// c_str函数
const char *c_str()
{
return str;
}
// at函数
char &at(int pos)
{
if (pos >= 0 && pos < size)
{
return str[pos];
}
// 处理越界情况
static char nullchar = '\0'; // 返回一个空字符
return nullchar;
}
};
int main()
{
myString str1("Hello");
std::cout << "str1: " << str1.c_str() << std::endl;
myString str2 = str1;
std::cout << "str2: " << str2.c_str() << std::endl;
std::cout << "str1大小: " << str1.getSize() << std::endl;
std::cout << "Character at position 2 in str1: " << str1.at(2) << std::endl;
return 0;
}
3.27作业
最新推荐文章于 2024-07-16 10:12:41 发布