返回char数组而不是const char *

时间:2014-02-19 08:44:22

标签: c++

如何从返回类型为const char*的函数返回本地char数组?
注意: 我想要一种不使用std :: string的方法

const char * getXXX()
{
  char buf[32];
  sprintf(buf,"XXX%d",i);  // some manipulation
  return buf; // How to return???
}

2 个答案:

答案 0 :(得分:2)

const char * getXXX()
{
  static char buf[32];
  sprintf(buf,"XXX%d",i);
  return buf;
}

这将有效

答案 1 :(得分:1)

正如您所注意到的,您不应该返回buf(这是一个局部变量,它的内存将在函数返回后释放)。解决方案是分配一些内存并将其返回。

char * returnBuf = new char[32];

memcpy(returnBuf, buf, 32 * sizeof(char));

return returnBuf;

请记住,调用者将负责释放getXXX返回的内存:

char * result = GetXXX();

// Process

delete[] result;