#pragma once
#include <cstring>
#include <iostream>
using namespace std ;
const size_t MAX_CHAR_IN_NODE = 100 ;
struct Node {
char s[MAX_CHAR_IN_NODE];
Node *next;
};
class myString;
myString operator + (const myString& lhs, const myString& rhs);
class myString {
friend myString operator + (const myString& lhs, const myString& rhs);
friend ostream& operator << (ostream& out, const myString& rhs);
public :
myString(void );
myString(const char *s);
myString(const myString& ms);
~myString(void );
myString& operator = (const myString& rhs);
myString& operator += (const myString& rhs);
const char & operator [] (size_t index) const ;
char & operator [] (size_t index);
myString operator () (size_t l, size_t r) const ;
size_t len(void ) const {
return len_;}
private :
Node *head_;
size_t cntNode_;
size_t len_;
};
#include "myString.h"
ostream& operator << (ostream& out, const myString& rhs)
{
for (Node *p = rhs.head_; p; p = p -> next) {
for (size_t i = 0 ; i < MAX_CHAR_IN_NODE; i ++)
if (p->s[i] != '\0' )
cout << p -> s[i];
else
break ;
}
return