我需要同时打开一系列文件。使用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?
这样做了答案 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。