如何从文件创建给定值的数组?

时间:2015-11-09 14:45:45

标签: c++ arrays

我有一个文件input.txt,如:

n
a1 a3 a3 an

其中n是元素数量(数组大小),a1 a2 a3 an是元素。

如何创建a1a2a3an个对象的数组? 我尝试使用this问题中的示例执行此操作,但据我所知,我无法在循环中创建数组,因为它将在每次迭代时创建它。

3 个答案:

答案 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)

假设a1a2a3an是整数,如

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)

  

但据我所知,我不能在循环中创建数组,因为它会在每次迭代时创建它。

你是对的。

如果您不想在每次迭代时创建新数组,则不要在循环中创建数组。在外面创建它。