//myString.h
#pragma once
#include <ostream>
using namespace std;
class myString
{
char* _mystring;
public:
myString(const char* str);
myString(const myString& str1,const myString& str2);
myString(const int len);
~myString(void);
friend ostream & operator<<(ostream &,const myString &);
friend myString operator+(const myString& str1,const myString& str2);
const int count() const;
const char & operator[](unsigned short offset) const;
};
//myString.cpp
#include "myString.h"
#include <string.h>
myString operator+( const myString& str1,const myString& str2 )
{
myString temp(str1,str2);
return temp;
}
ostream & operator<<( ostream & out,const myString & str )
{
for(int i=0;i<str.count();i++)
{
out<<str[i];
}
return out;
}
myString::myString(const char* str)
{
_mystring=new char[strlen(str)+1];
strcpy(_mystring,str);
}
myString::myString( const int len )
{
_mystring=new char[len];
memset(_mystring,0,len);
}
myString::myString( const myString& str1,const myString& str2 )
{
_mystring=new char[str1.count()+str2.count()];
for(int i=0;i<str1.count();i++)
{
_mystring[i]=str1[i];
}
for(int j=0;j<str2.count();j++) //把这一行的j<str2()改为:j<=str2.count();乱码消失,结果正确,但不理解为什么?
{
_mystring[str1.count()+j]=str2[j];
}
}
myString::~myString(void)
{
}
const int myString::count() const
{
return strlen(_mystring);
}
怎么把剩下的
friend ostream & operator<<(ostream &,const myString &);
friend myString operator+(const myString& str1,const myString& str2);
ibeautiful