C++,delete处为何中断
#include< iostream >
#include< vector >
using std::vector;
#include< string >
using namespace std;
char* tran(string str)
{
char* t = new char[strlen(str.c_str()) + 1];
char* p = t;
strcpy_s(p, strlen(str.c_str()) + 1, str.c_str());
while (*p != 0)
{
if (*p >= 'a'&&*p <= 'z')
* (p++) -= 32;
else
++p;
}
p[strlen(str.c_str())] = 0;
return t;
}
void main()
{
vector< string > v;
string s;
char * t;
while (cin >> s&&*(s.c_str()) != '#')
v.push_back(s);
vector< string >::iterator iter = v.begin();
t = tran(*iter);
int len = strlen(t);
delete[] t;////////出错////////////////
system("pause");
}
最佳答案
p[strlen(str.c_str())] = 0;
跳出循环后p指针已经指向了原t字符串的最后一位,*p的值就是0,不用再向后移动字符串长度个位置了。
其他回答
暂无其它回答!