65,176
社区成员




#include <iostream>
#include <assert.h>
#include <iomanip>
using namespace std;
class myString;
istream& operator>> (istream&,myString&);
ostream& operator <<(ostream&,const myString&);
class myString
{
public:
myString& operator=(const myString&);
int size()const
{
return _size;
}
const char* c_str()const
{
return _string;
}
friend istream& operator>> (istream&,myString&);
private:
int _size;
char* _string;
};
inline myString& myString::operator =(const myString& str)
{
if (this!=&str)
{
if (_string)
delete[]_string;
_size=str._size;//问题一
_string=new char[_size+1];
strcpy(_string,str._string);
}
return *this;
}
inline istream& operator>> (istream& io,myString& s)
{
const int limit_string_size=4096;
char inBuf[limit_string_size];
io>> setw(limit_string_size)>> inBuf;
s._size = strlen( inBuf );
s._string=new char[s._size+1];
strcpy(s._string,inBuf);
return io;
}
inline ostream& operator <<(ostream& os,const myString& s)//问题二
{
return os <<s.c_str();
}
int main()
{
myString s;
cin>>s;
cout<<s;
return 0;
}