1 myString.h
#pragma once
#ifndef __MYSTRING__H__
#define __MYSTRING__H__
#include <iostream>
#include <string.h>
using namespace std;
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(myString& s) :str(new char[s.size + 1]), size(s.size)
{
strcpy(str, s.str);
}
//析构函数
~myString()
{
cout << "析构" << endl;
delete[]str; //释放指针成员
str = NULL;
}
//判空函数
bool empty()
{
return !strlen(str);
}
//size函数
unsigned int mysize()
{
return size;
}
//c_str函数
char* c_str()
{
return str;
}
//at函数
char& at(int n)
{
if (n >= 0 && n <= size)
{
return str[n];
}
else
{
cout << "给定值有误" << endl;
}
}
};
#endif
2 myString.c