仿照string完成myString类
#include <iostream>
#include <cstring>
using namespace std;
class mystring
{
private:
char *str; // 记录c风格的字符串
int size; // 记录字符串的实际长度
public:
// 无参构造
mystring():size(10)
{
str = new char[size];
str[0] = '\0';
}
// 有参构造
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& operator=(const mystring& other)
{
if (this == &other) {
return *this;
}
delete[] str;
size = other.size;
str = new char[size+1];
strcpy(str, other.str);
return *this;
}
// 析构函数
~mystring()
{
delete[] str;
}
// 判空函数
bool empty()
{
return (size == 0);
}
// size函数
int length() const
{
return size;
}
// c_str函数
const char* c_str()
{
return str;
}
// at函数
char& at(int pos)
{
//合法性检查
if (pos >= size || pos < 0) {
cout<<"输入下标不合法"<<endl;
}
return str[pos]; //返回左值
}
};
int main()
{
mystring s1 = "hello";
int len = s1.length();
for(int i=0;i<len;i++)
{
cout<<s1.at(i)<<" ";
}
cout<<endl;
const char *s2 = s1.c_str();
cout <<s2<<endl;;
return 0;
}