首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

,编了一个类,关于字符串的,但是不知道对否

2013-01-09 
求助,编了一个类,关于字符串的,但是不知道对否class CString{private:char* p_strint lenpublic:CString

求助,编了一个类,关于字符串的,但是不知道对否
class CString
{
private:
char* p_str;
int len;
public:
CString(char* p_s);//构造函数
void clear();//清除整个字符串
int getLength();//返回字符串首地址
const char* get();//返回字符串首地址
void insert(char c);//将字符c插入到字符串的最后
void insert(char* p_s);//合并字符串
void remove();//去掉字符串最后一个字符
~CString();
};

CString::CString(char *p_s)
{
p_str=p_s;
len=0;
}

void CString::clear()
{
p_str=0;
}

int CString::getLength()
{
return strlen(p_str);
}

const char* CString::get()
{
return &p_str[0];
}

void CString::insert(char c)
{
int len=strlen(p_str);
p_str[len]='c';
p_str[len+1]='\0';
}

void CString::insert(char *p_s)
{
char p[255];
strcpy_s(p,p_str);
strcat_s(p,p_s);

}

void CString::remove()
{
int len=strlen(p_str);
p_str[len-1]='\0';
}

CString::~CString()
{
delete p_str;
}
[解决办法]
感觉挺多问题的,首先你的数据成员len是用来干什么,好你在程序中没体现到.
第一个是构造函数,你不是为指针成员分配新空间,而是直接把参数的地址赋给p_str,这种设计会出问题的(当你传进来的实参无效时,类也就无效了),另外我想你的len是想用来指示p_str里面字符长度还是??原本想用size来表示为p_str分配的空间.
第二个insert函数你也没考虑到空间容量够不够的问题......其他.....
第三个,你析构函数用了delete,构造没有new
....
你可以试下程序运行,看看书

热点排行