vector中自定义字符串类的问题
类定义:
class myStr{
char *t;
public:
myStr(char *s)
{
if(s != NULL)
{
t = new char[strlen(s) + 1];
strcpy(t, s);
}
}
friend ostream &operator << (ostream &os, myStr &ms)
{
return (os << ms.t);
}
~myStr()
{
cout << "deleting\n";
delete []t;
}
};
主函数:
vector<myStr> vms;
char str[100];
cin.getline(str, 100);
char *token = new char[20];
token = strtok(str, " ");
while(token != NULL)
{
vms.push_back(token);
token = strtok(NULL, " ");
}
cout << "the string you input is\n";
for(unsigned int ix = 0; ix < vms.size(); ix++)
cout << vms[ix] << " ";
问题是: 析构函数中的deleting紧跟在push_back语句后面就会输出,为什么在那个地方会执行析构函数,导致输出乱码?
winxp sp2 + cb2009, 包含了相应的头文件