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, 包含了相应的头文件
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, 包含了相应的头文件
...全文
相关推荐
一个深入学习C标准模板库核心机制与设计模式的综合性实践项目_通过从零开始手动编码实现简化版STL中的关键组件包括自定义字符串类模拟stdstring基础功能开发动态数组容器仿造.zip
一个深入学习C标准模板库核心机制与设计模式的综合性实践项目_通过从零开始手动编码实现简化版STL中的关键组件包括自定义字符串类模拟stdstring基础功能开发动态数组容器仿造.zip
C++中vector可以作为map的键值实例代码
主要介绍了C++中vector可以作为map的键值实例代码,需要的朋友可以参考下
C++ vector自定义大小[源码]
本文详细介绍了C++中vector容器自定义大小的几种方法,包括初始化时指定大小和默认值、使用resize函数调整大小以及二维vector的大小设置。文章通过代码示例展示了如何定义一维和二维vector,并指定其大小和初始值,同时指出了在指定大小后使用push_back的注意事项。此外,还提到了resize函数的初始化用法,但未深入探讨其详细功能。
VC_CIVStringSet.rar_VC_CIVStringS_mfc stl_字符串类
基于MFC和STL平台的字符串类,可以实现在快速字符串搜索。
(Vector Cast)UT 工程的总结问题
(Vector Cast)UT 工程的总结问题


