在c ++中声明不同范围的数组

时间:2015-02-27 16:39:31

标签: c++ arrays file

我正在尝试声明文件中指定长度的对象数组。然后我想用同一文件中的数据填充此数组数组。 我们假设我的文件看起来像这样:
3 - 阵列的长度
1 2
3 4
5 6
这是我的代码

while ( getline (myfile,line) ){
istringstream ss(line);
if(i==0){
   ss >> numOfObjects;
   Object * array[numOfObjects];
} 
if((i>=i) && (i<=1+numOfObjects)){
   Object * o=new Object();
   ss >> x >> y;
   location l;
   l.x=x;
   l.y=y;
   o->setLocation(l);
   array[i-2]=o;
}
i++; 
}

当我尝试运行我的代码时,它说该数组未在此范围内声明。有什么我能做的吗?我知道如果我在while循环之外声明数组它会工作但我需要它必须具有文件中指定的精确长度。 对不起,如果这是一个愚蠢的问题,我只是一个初学者

2 个答案:

答案 0 :(得分:1)

你可以在外面声明它并使用new after动态分配内存。

Object * array = nullptr;
if (...)
{
 ....
 array = new Object[numOfObjects];
 ....
}

delete [] array;

正如所指出的,你应该考虑使用一个自动管理内存的向量

答案 1 :(得分:0)

读取循环外的事物数量,而不是其中的特殊情况。

if (getline(myfile,line))
{
   istringstream number(line);
   number >> numOfObjects;
   Object * array[numOfObjects];

   while (i < numOfObjects && getline (myfile,line))
   {
      // ...
   }
}