Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/133.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 我可以用c++;_C++_Arrays_Ifstream - Fatal编程技术网

C++ 我可以用c++;

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对象数组处理文件会更容易。我申报时出错了

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
请记住接受答案,这样问题就结束了