35 lines
		
	
	
	
		
			656 B
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			35 lines
		
	
	
	
		
			656 B
		
	
	
	
		
			C++
		
	
	
	
	
	
#include <cstring>
 | 
						|
 | 
						|
#ifndef STRING_HH
 | 
						|
#define STRING_HH
 | 
						|
class String {
 | 
						|
public:
 | 
						|
 | 
						|
  String(const char* str="") : _s(0) { insert(str) ; }
 | 
						|
  String(const String& a)  : _s(0) { insert(a._s) ; }
 | 
						|
  ~String() { delete[] _s ; }
 | 
						|
 | 
						|
  String& operator=( const String& a );
 | 
						|
  String& operator+=( const String& a );
 | 
						|
 | 
						|
  operator const char* const() { return data(); }
 | 
						|
 | 
						|
  int length() const { return _len ; }
 | 
						|
  const char* data() const { return _s ; }
 | 
						|
 | 
						|
 | 
						|
private:
 | 
						|
 | 
						|
  char* _s ;
 | 
						|
  int _len ;
 | 
						|
 | 
						|
  void insert(const char* str) { // private helper function
 | 
						|
     _len = strlen(str) ;
 | 
						|
     if (_s) delete[] _s ; 
 | 
						|
     _s = new char[_len+1] ;
 | 
						|
    strcpy(_s,str) ;
 | 
						|
  }
 | 
						|
 | 
						|
} ;
 | 
						|
 | 
						|
#endif 
 |