C++,delete处为何中断

原问题:C++,delete处为何中断
分类:编程开发 > 最后更新时间:【2016-12-13 05:58:28】
问题补充:

#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,不用再向后移动字符串长度个位置了。

最佳答案由网友  BIRD11329  提供
公告: 为响应国家净网行动,部分内容已经删除,感谢网友理解。
10

分享到:

其他回答

暂无其它回答!

    推荐