我可以在 c++ 中有一个 ifstream 数组吗?

Can I have an array of ifstream in c++

本文关键字:数组 ifstream 有一个 c++ 我可以      更新时间:2023-10-16

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

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

怎么了?我看到人们在如何创建 ifstream 对象数组以及如何使用编号的文本文件填充该数组中执行此操作?

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

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

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

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

在C++中声明数组时:

int i[size];

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

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

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

现在大小可以是一个变量。问题当然是,我不仅不是指针,必须这样使用,以后还必须解除分配,否则会出现内存泄漏,即您的程序在技术上保留了内存空间,但没有用于任何用途。

有关动态内存的更多信息,请点击此处。