c++ - 如何从C++中的函数返回数组

标签 c++ arrays file-handling

您好,我正在尝试从输入文件中获取数据并将其放置在数组中。我能够完成我的一个功能,并使数组返回,如下所示:

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/

相关文章:

.net - 如何在不调用 ResourceManager.GetString() 并捕获异常的情况下确定 ResourceManager 是否包含键?

c++ - 项目之间应该如何依赖?

java - 如何在spring boot项目启动时创建目录

c - 读取文本文件和 C 中每个单词的大写首字母

C++ 单元测试库

c++ - 为什么 cout 没有输出字符串

arrays - UICollectionview 缓慢的数据重新加载

java - 将对象数组传递给静态方法时出现空指针异常

delphi - 在 Delphi 中将静态数组作为动态数组的参数传递

python - watchdog(python) - 仅监视一种文件格式并忽略 'PatternMatchingEventHandler' 中的其他所有内容