返回char **动态数组C ++

时间:2014-11-14 08:36:36

标签: c++ arrays char return

我基本上有一个存储名称的动态字符数组,并将其声明为char **names

我有一个名为namesnumber的变量,用于设置names数组的大小。

例如,

namesnumbers = 5
names = new char*[namesnumbers];
for (int i=0; i<namesnumbers; i++)
{
   names[i] = new char[65];
   strcpy(names[i], actualName);
}
names = {Mike, Sam, Mark, Bill, George}

这是我的返回方法,但它只返回一个内存地址而不是实际的名称

const char** getNames()
{
   return names;
}

我希望我的getNames()方法返回5个名字。

1 个答案:

答案 0 :(得分:2)

// namesnumbers = 5
names = new char*[namesnumbers];
for (int i=0; i<namesnumbers; i++)
{
   names[i] = new char[65];
   strcpy(names[i], actualName);
}
// names = {Mike, Sam, Mark, Bill, George}

使用std库进行等效初始化:

  • 与实例化分开:

    std::vector<std::string> names;
    for(const auto& n: actualNames) // actualNames assumed to be an array
        names.push_back(n);
    
  • 实例化:

    std::vector<std::string> names = { "Mike", "Sam", "Mark", "Bill", "George" };
    
  • 返回五个名字:

    const std::vector<std::string>& getNames()
    {
        return names;
    }