#ifndef STRING_INCLUDED #define STRING_INCLUDED 1 #include #include struct string { size_t len; char *p; string( ) : len{0}, p{ new char[0] } { } string( const char* s ) : len{ strlen(s) }, p{ new char[ len ] } { for( size_t i = 0; i < len; ++ i ) p[i] = s[i]; } string( const string& s ) : len{ s. len }, p{ new char[ len ] } { for( size_t i = 0; i < len; ++ i ) p[i] = s.p[i]; } void operator = ( const string& s ) { if( len != s.len ) { delete[] p; len = s. len; p = new char[ len ]; } for( size_t i = 0; i < len; ++ i ) p[i] = s.p[i]; } void operator = ( const char* c ) { delete[] p; len = strlen(c); p = new char[ len ]; for( size_t i = 0; i < len; ++ i ) p[i] = c[i]; } ~string( ) { std::cout << "desctr\n"; delete[] p; } }; inline std::ostream& operator << ( std::ostream& out, const string& s ) { for( size_t i = 0; i < s.len; ++ i ) out << s.p[i]; return out; } #endif