我有一个文件input.txt
,如:
n
a1 a3 a3 an
其中n
是元素数量(数组大小),a1
a2
a3
an
是元素。
如何创建a1
,a2
,a3
,an
个对象的数组?
我尝试使用this问题中的示例执行此操作,但据我所知,我无法在循环中创建数组,因为它将在每次迭代时创建它。
答案 0 :(得分:3)
只需创建vector
,就像这样:
ifstream fin("inout.txt", ios::in | ios::binary);
int n;
fin >> n;
vector<int> v;
int m;
while (n--) {
fin >> m;
v.push_back(m);
}
然后你总是可以从
获得一个数组int *array = v.data();
答案 1 :(得分:1)
假设a1
,a2
,a3
,an
是整数,如
4
1 2 3 4
示例实现:
#include <cstdio>
int main(void) {
int n;
int *a;
FILE* fp;
// read the text and create an array
fp = fopen("input.txt", "r");
if (fp == NULL) return 1;
if (fscanf(fp, "%d", &n) != 1) return 1;
a = new int[n];
for (int i = 0; i < n; i++) {
if (fscanf(fp, "%d", &a[i]) != 1) return 1;
}
fclose(fp);
// print the array for checking
for (int i = 0; i < n; i++) printf("%d\n", a[i]);
delete[] a;
return 0;
}
答案 2 :(得分:1)
但据我所知,我不能在循环中创建数组,因为它会在每次迭代时创建它。
你是对的。
如果您不想在每次迭代时创建新数组,则不要在循环中创建数组。在外面创建它。