您好,我正在尝试从输入文件中获取数据并将其放置在数组中。我能够完成我的一个功能,并使数组返回,如下所示:
string * animal_name_grab()
{
static string animal_name[SIZE];
int cntr = 0;
static string line_skip[SIZE];
while (!input_animals.eof())
{
getline(input_animals, animal_name[cntr]);
getline(input_animals, line_skip[cntr]);
cntr++;
}
return (animal_name);
}
现在,我试图做同样的事情,但要加总数字。我不明白这到底是怎么回事。我确实以与上一个相同的方式调用了函数,但是为了防万一,我也插入了它。
声明为double * array_animal_total;
函数调用-array_animal_total = animal_total_grab();
double * animal_total_grab()
{
static double animal_total[SIZE];
static string line_skip[SIZE];
int cntr = 0;
double sum = 0;
double total_count;
while (!input_animals.eof())
{
getline(input_animals, line_skip[cntr]);
for ( int i ; i < 10 ; i++)
{
input_animals >> total_count;
sum = sum + total_count;
}
animal_total[cntr] = sum;
cntr++;
}
return (animal_total);
}
如果这是太多代码,请告诉我,以便我进行编辑。我只是想证明我了解这些 Material ,所以我有点麻烦。我是初学者,所以请保持友好。
最佳答案
I was able to complete my one function and have the array return as shown below:
string * animal_name_grab()
您没有返回数组。您正在返回一个指针。指针指向数组的元素。
How to return an array from a function in c++
实际上,不可能直接从C++中的函数返回数组。但是,可以返回一个类的实例,并且类可以具有数组成员,因此,如果将数组包装在一个类中,则可以返回该包装对象。有一个用于此类数组包装器类的标准模板。它的名称是
std::array
。例:std::array<std::string, SIZE> animal_name_grab()
{
std::array<std::string, SIZE> animal_name;
...
return animal_name;
}
请注意,复制大数组可能会很慢,并且您将依赖编译器优化来避免复制返回值。使用输出迭代器而不是返回数组有时会更高效,并且通常更灵活。
关于c++ - 如何从C++中的函数返回数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59326727/