【发布时间】:2020-04-07 03:38:36
【问题描述】:
您好,我正在尝试从输入文件中获取数据并将其放入数组中。我能够完成我的一个功能并返回数组,如下所示:
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);
}
现在我正在尝试做同样的事情,但将数字的总和相加。我不知道它到底有什么问题。我以与上一个完全相同的方式调用函数,但我也将其插入以防万一。 声明双 *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);
}
如果此处输入的代码过多,请告知我,以便我进行编辑。我只是想证明我理解这些材料,我只是遇到了一些麻烦。我是初学者,所以请善待。
【问题讨论】:
-
return 0;...? -
顺便说一句,
while (!input_animals.eof())的这种用法和this 一样是错误的。 -
看起来你制作数组
static是一种解决方法,以确保内存的范围在你的函数之外持续存在,这对我来说似乎很棘手。相反,为什么不将函数的签名更改为std::vector<double> animal_total_grab(),然后按值返回vector。 -
我的建议是不要。如果您知道编译时的大小,则返回
std::array,如果您知道运行时的大小,则返回std::vector。 C++ 的值语义是一个非常好的特性,你应该尽可能地使用它(大多数时候) -
@peschü 请不要建议在 2019 年使用
auto_ptr。幸运的是,该标准已被删除。
标签: c++ arrays file-handling