我尝试了下面的代码以返回带有所有字符串ID的数组,但是它不起作用。
输出仅返回一个数字。如何返回带有ID的数组?

#include <iostream>
#include <string>
using namespace std;

string* getArray()
{
    int nanim;
cout << "Enter the number of animals: ";
cin >> nanim;

string *id = new string[nanim];
for ( size_t i=0; i < nanim; i++ )
{
    cout<< "\nEnter id anim "<< i+1 << ": ";
    cin >> id[i];
    }
    for ( size_t i = 0; i < nanim; i++ )
    {
    cout << id[i] << endl;
    }
return id;
 }

  int main()
{
 int n;
 cin>>n;
    string* anim[n]=getArray();
cout<<anim;
return 0;
}

最佳答案

您正在返回一个指向数组中第一个元素的指针。

要访问刚刚调用了string* arr = getArray();的数组元素,可以使用arr [0],arr [1],arr [2]等访问字符串。

但是不要忘记删除您在函数中分配的内存。目前,您的内存泄漏很大。

通常,这不是很好的编程方法,因为函数调用者不知道返回的数组中有多少个元素。最好获取调用者中的动物数量并将其传递给您的函数。

更好的是,重新构建代码以使用std :: vector,因为我看到您已经在使用stl。然后,您不必(明确地)担心内存分配和释放。

09-04 14:09
查看更多