Yup - that's a great START!
Also, STDLIB.
Then there is my way:
my jfc_string.h
#pragma once
//=============================================================================
class JFC_STRING{
//=============================================================================
public:
char *s;char chNull;
unsigned int uiLength;
JFC_STRING();
~JFC_STRING();
void Clear(void);
void ConCat(const char *p_char);
void Set(const char *p_char);
char *Get(void);
unsigned int Length(void);
bool EqualCS(char *p_szCompareThis); // Case Sensitive
bool Equal(char *p_szCompareThis);
//function Replace(source$,search$,key$)
//Function Misc_strip_path(f$)
//Function Remove_End(f$)
//function strInstr(source$,search$)
};
//=============================================================================
my jfc_string.h (which uses string.h)
#include "jfc_string.h"
#include "string.h"
//=============================================================================
JFC_STRING::JFC_STRING(){
//=============================================================================
this->s=0;
chNull='\0';
this->Clear();
};
//=============================================================================
//=============================================================================
JFC_STRING::~JFC_STRING(){
//=============================================================================
if(this->s!=0){
delete this->s;
};
};
//=============================================================================
//=============================================================================
void JFC_STRING::Clear(void){
//=============================================================================
if(this->s!=0){
delete this->s;
};
this->uiLength=0;
this->s=new char[this->uiLength+1];
this->s[this->uiLength]='\0';
};
//=============================================================================
//=============================================================================
void JFC_STRING::ConCat(const char *p_char){
//=============================================================================
char *st;
this->uiLength=(unsigned int)(strlen(p_char)+this->uiLength);
st=new char[this->uiLength+1];
st[0]=chNull;
strcat(st,this->s);
strcat(st,p_char);
delete this->s;
this->s=new char[this->uiLength+1];
strcpy(this->s,st);
delete st;
this->s[this->uiLength]='\0';
};
//=============================================================================
//=============================================================================
void JFC_STRING::Set(const char *p_char){
//=============================================================================
this->Clear();
this->ConCat(p_char);
};
//=============================================================================
//=============================================================================
char *JFC_STRING::Get(void){
//=============================================================================
if(this->s!=0){
return this->s;
}else{
return 0;
};
};
//=============================================================================
//=============================================================================
unsigned int JFC_STRING::Length(void){
//=============================================================================
return this->uiLength;
};
//=============================================================================
//=============================================================================
bool JFC_STRING::EqualCS(char *p_szCompareThis){
//=============================================================================
return (strcmp(this->s,p_szCompareThis)==0);
};
//=============================================================================
//=============================================================================
bool JFC_STRING::Equal(char *p_szCompareThis){
//=============================================================================
return (strcmpi(this->s,p_szCompareThis)==0);
};
//=============================================================================
Sample:
JFC_STRING *s=new JGC_STRING();
s->Set("Hello");
s->ConCat(" World!");
dbPrint(s->s);
// ... or ....
dbPrint(s->Get());
you'll figure out the rest