Hello everyone!

I have created this code for fun to help people understand the basic functionality of the string class. I have named my verion the Vstring class since i dont want people getting confused with the two. I have also added unit testing to this project to allow people to understand how amazing asserts come in handy in producing code with minimum errors. As you will see there is a lot of emphasis on the object oriented approach so please understand objects pointers and references before downloading.

Class decleration:

Code:
static const signed short int V_STRING_ARRAY_MAX = 32767; // used for input stream
class Vstring
{
public:
	Vstring(void);
	Vstring(const Vstring& s);
	Vstring(const char* stri);
	~Vstring(void);

	Vstring& operator=(const Vstring& rhs);
	Vstring operator+(const Vstring& rhs);
	bool operator==(const Vstring& rhs);
	bool operator!=(const Vstring& rhs);
	bool operator<(const Vstring& rhs);
	bool operator >(const Vstring& rhs);
	bool operator >=(const Vstring& rhs);
	bool operator <=(const Vstring& rhs);
	
	friend ostream& operator<< (ostream& os, const Vstring& str);
	friend istream& operator>> (istream& is, Vstring& str);

	const char at( int pos )const;
	
	const char* c_str();
	
	void clear();
	
	bool empty() const;
	
	Vstring& erase(int index = 0, int size = 0);
	
	int find ( const Vstring& str, int pos = 0 ) const;
	int find ( const char* str, int pos = 0 );
	
	Vstring& insert( int pos1, const Vstring& str );
	Vstring& insert( int pos1, const char* s );
	
	int length() const;
	
	const int max_size() const;
	
	Vstring& replace ( int index, int size, const Vstring& str );
	Vstring& replace(int pos1, int n1, const char* str);
	
	int size() const;
	
	void swap ( Vstring& str );
	void swap ( char* str );

private:
	int VstringLen;
	char* VstringArray;
	char* c_strArray;
	int c_strLength(const char* c_str);
};