vector中自定义字符串类的问题

fairchild811 fairchild811 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
类定义:

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, 包含了相应的头文件
...全文

相关推荐

评论 27
收藏 已收藏
分享
返回顶部
fairchild811
C++ 语言 65,214 成员 250,514 内容