我尝试了下面的代码以返回带有所有字符串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。然后,您不必(明确地)担心内存分配和释放。