【发布时间】:2021-08-10 17:39:22
【问题描述】:
我的任务是从文本文件中读取 3 行,每行 5 个逗号分隔的值,对每一列求和,然后将结果存储在一个名为 bins 的数组中。我正在努力从文本文件中读取整数,因为它们是逗号分隔的。我首先需要澄清如何只读取整数。
我的下一个想法是将文件中的整数存储到一个名为“calc”的数组中,并使用每个元素的索引来汇总值。然后我会将这些结果存储到“bins”数组中。
这是我尝试读取逗号分隔整数的一些代码,但我似乎无法让它工作。
int a,b,c,d,e,f,g,h,i,j,k,l,m,n,o;
int calc[15] = {a,b,c,d,e,f,g,h,i,j,k,l,m,n,o};
ifstream myfile;
myfile.open("values.txt");
for(int i = 0; i <= 15; i++)
{
myfile >> calc[i];
myfile.close();
a = calc[0];
b = calc[1];
c = calc[2];
d = calc[3];
e = calc[4];
f = calc[5];
g = calc[6];
h = calc[7];
i = calc[8];
j = calc[9];
k = calc[10];
l = calc[11];
m = calc[12];
n = calc[13];
o = calc[14];
cout << calc[i] << endl;
}
我对使用代码真的很陌生,但我不太了解如何以这种方式使用值。这是一项简单的任务,但我似乎无法用代码实现它。
【问题讨论】:
-
i <= 15off-by-one error 在这里。 -
int calc[15] = {a,b,c,d,e,f,g,h,i,j,k,l,m,n,o};看起来有点可疑。为什么不int calc[15];或int calc[15] = { };。您所做的是用 15 个未初始化变量a...o初始化 15 个数组元素。恐怕这会使数组仍然像以前一样“未初始化”。 -
@Scheff 它们在全局范围内,因此它们是默认初始化的,即 0。但否则代码有异味。有
int calc[15] = {};就够了 -
@Swift-FridayPie 它们在全球范围内不确定。我想这里有一些东西遗漏了。
for之类的语句不能在全局范围内使用。 (它们可能只出现在任何类型的函数体中。) -
请edit 并提供minimal reproducible example。否则,它不会持续很长时间,直到有人告诉你这只是不按原样编译......;-)