#include
const char * mid(const char *dst, int n, int m)
{char *esd;
int len = strlen(dst);
if (n > len - 1 || m > len - n || m<1)
{
return dst;
}
else
{
esd = new char[m];
for (int i = 0; i < m; i++){
esd[i] = dst[n + i];
}
return esd;
}
}
int main(){
const char *aaa = "woshizhongguoren";
const char *aac= mid(aaa,1, 4);
std::string kksd = (std::string)aac;
printf("%s,%s", kksd, kksd);
delete[] aac;
std::cin.get();
}
代码如上,目的是截取一段字符出来,为什么最后输出字符串,两个kksd,得到的不一样?第二个正确,第一个乱码...
求大神指导..再就是我这里这个new 和delete 这么用...有问题么?
esd = new char[m+1]; //多分配一个空间存放'\0'
for (int i = 0; i < m; i++) {
esd[i] = dst[n + i];
}
esd[m] = 0; //最后一个存放0
printf("%s,%s", kksd.data(), aac);
楼主加油努力,,,,,,,,,,,,,