//输入符重载
istream& operator>>(istream& in, const MyString& str)
{
in>>str.m_data;
return in;
}
在博客上看了好几个人重载>>时,是这么写的。问题在于in>>str.m_data中,str.m_data并没有分配内存,所以这个>>一使用程序就会跑飞。应该先分配内存。
istream& operator>>(istream& in, const MyString& str)
{
char* buffer = new char[4096];
in >> buffer;
str.m_data = new char[strlen(buffer) + 1];//+1是用来存放'\0',字符串结束符的。
memset(str.m_data, 0, strlen(buffer) + 1);//做一个负责的人。
strcpy(str.m_data, buffer);
delete [] buffer;
return in;
}