C++ 我可以用c++;
我需要同时打开一系列文件。使用ifstream对象数组处理文件会更容易。我申报时出错了C++ 我可以用c++;,c++,arrays,ifstream,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]; ifstream fin[文件计数]; 错误:非POD元素类型“ifstream”的可变长度数组
ifstream fin[file_count];
error: variable length array of non-POD element type 'ifstream'
(aka 'basic_ifstream<char>')
ifstream fin[fcount];
ifstream fin[文件计数];
错误:非POD元素类型“ifstream”的可变长度数组
(又名“基本流”)
ifstream fin[fcount];
怎么了?我看到人们在中这样做,您无法创建非固定长度的静态数组(
file\u count
在运行时获取其值,如果它不是常量)
但是,您可以使用指向流的指针数组,这可能会简化您的任务。将其视为一种选择:
ifstream* fin = new ifstream[file_count];
...
delete [] fin;
问题是,你声明的是一个不可变的数组,在C++中是不允许的。 在C++中声明数组时:
int i[size];
变量大小必须是常量整数值
< >为了创建具有可变大小的C++数组,需要使用动态分配的内存:
int* i;
i = new int[size];
现在,大小可以是一个变量。
问题当然是,我不仅不是指针,而且必须使用它,它还必须在以后释放,否则您将出现内存泄漏,即您的程序在技术上保留了内存空间,但没有用于任何用途
有关动态内存的详细信息。这将不起作用。C++流是不可复制的,向量要求类型具有复制语义。谢谢PaulMcKeZii,我不知道。为了让它更好:
vector
一个更灵活、更惯用、更安全的解决方案,以及array,file\u count>
如果在编译时知道file\u count
请记住接受答案,这样问题就结束了