C++ String复制操作
小弟有个问题想问各位大虾,我已经编写好了一个MyString类,想其他的函数功能都已经实现么,现在还想实现一个“支持复制操作,左操作数字符数数组不能容纳右操作数字符数数组时自动释放并重新分配内存”功能的函数,请问个位应该怎么操作,这个好像涉及到了动态分配内存的问题。。
这是头文件(2个)
1 MyString.h
#ifndef _MYSTRING_H_
#define _MYSTRING_H_
#include<iostream>
#include<string>
#include "StatusCode.h"
using namespace std;
/*类定义部分*/
class MyString{
private:
char* szBuf;//字符数组指针
size_t stSize;//字符数组大小
size_t stLength;/*字符串长度这里我把stlen改为stlength*/
string S;
public:
static int objectcount;
MyString();
~MyString();
Init();
void Init(char* tempBuf,int tempsize,int templength);
StatusCode InittheString(string tempS);
/*这里定义字符串复制函数*/
};
int MyString::objectcount=0;
MyString::MyString(){
objectcount++;
}
MyString::~MyString(){
objectcount--;
cout<<"现在调用~MyString()函数并且释放相应的内存单元!"<<endl;
}
MyString::Init(){
*szBuf=NULL;
stSize=0;
stLength=0;
}
void MyString::Init(char* tempBuf,int tempsize,int templength){
szBuf=tempBuf;
stSize=tempsize;
stLength=templength;
}
StatusCode MyString::InittheString(string tempS){
if(tempS.length()==0)
return OUTOFRANGE;
else{
S.assign(tempS);
return SUCCESS;
}
}
#endif
2 StatusCode.h
#ifndef _STATUSCODE_H_
#define _STATUSCODE_H_
enum StatusCode {SUCCESS,UNDER_FLOW,OUTOFRANGE};
#endif
这个是.cpp文件
#include "MyString.h"
void main(){
cout<<"是不是现在就开始?(Y/N)"<<endl;
char ch;
cin>>ch;
if(ch=='Y'){
int count=0;
cout<<"请输入需要进行处理的字符串"<<endl;
string tempstring;
cin>>tempstring;
if(ch=='Y'){
MyString object1;
object1.InittheString(tempstring);
cout<<"你输入的字符串是:"<<tempstring<<endl;
cout<<"此时你的对象数目是:"<<object1.objectcount<<"个"<<endl;
}
}
else
return ;
}