C++ day3
题目:仿照string类,实现myString
#include <iostream>
#include <cstring>
using namespace std;
//仿照string完成myString类
class myString
{private:char *str; //记录c风格的字符串int size; //记录分配的内存大小int len; //字符串长度public://无参构造myString():size(10),len(0){str = new char[size]; //构造出一个长度为10的字符串str[0]='\0';}//有参构造myString(const char *s): len(strlen(s)), size(len + 1) //有参构造 string s("hello wirld");{str = new char[size];strcpy(str,s);}//析构函数~myString(){delete [] str;}//判空函数bool empty(){return len==0;}//size函数int get_size(){return size;}//或许字符串长度int get_len(){return len;}//c_str函数const char* c_str(){return str;}//at函数char &at(int index){if (index < 0 || index >=len){throw std::out_of_range("查找范围错误");}return str[index];}//二倍扩容void resize(int newSize){if (newSize > size){char *newStr = new char[newSize];std::strcpy(newStr, str);delete[] str;str = newStr;size = newSize;}}
};int main()
{myString s("Hello, World!");std::cout << s.c_str() << std::endl;std::cout << "len: " << s.get_len() << std::endl;std::cout << "Size: " << s.get_size() << std::endl;std::cout << "第七个字符为: " << s.at(7) << std::endl;return 0;
}