我可以在c ++中使用ifstream数组吗?

时间:2014-04-07 03:28:24

标签: c++ arrays ifstream

我需要同时打开一系列文件。使用ifstream对象数组处理文件会更容易。我收到错误声明

ifstream fin[file_count];

error: variable length array of non-POD element type 'ifstream'
      (aka 'basic_ifstream<char>')
  ifstream fin[fcount];

有什么问题?我看到人们在How do I create an array of ifstream objects and how can I populate that array with numbered text files?

这样做了

2 个答案:

答案 0 :(得分:1)

您无法创建非固定长度的静态数组(file_count在运行时获取其值,如果它不是常量)。

但是,您可以使用指向数组的指针数组,这可能会减轻您的任务。将其视为一种选择:

ifstream* fin = new ifstream[file_count];
...
delete [] fin;

答案 1 :(得分:1)

问题在于您声明了一个C ++中不允许的可变大小数组。

在C ++中声明数组时:

int i[size];

变量大小必须是常量整数值

要创建具有可变大小的C ++数组,您需要使用动态分配的内存:

int* i;
i = new int[size];

现在尺寸可以是变量。 问题当然不仅是我不是指针而且必须这样使用它,它也必须在以后解除分配,否则你会有内存泄漏,即你的程序在技术上保留但不使用的内存空间任何事情。

有关动态记忆的更多信息here