C ++在if语句中声明变量

时间:2012-08-09 09:21:33

标签: c++ declaration

我在c ++中有一个非常基本的问题,我正在读取一个制表符分隔文件,我想要声明一个带有维度的数组,如果文件有的字段数(使用不同宽度的不同文件),所以我需要为了读取第一行并计算字段数,我试过这个:

while(getline(t, line));{
...
if(!flag)
{int array[size][5];
flag=1}
...
}

但后来我收到了错误:

错误:未在此范围内声明'array'

我理解这是因为变量的范围在if循环中,有没有办法声明一个空数组并调整它的大小?或者我必须使用指针?

4 个答案:

答案 0 :(得分:6)

数组的大小必须是编译时常量。如果需要动态大小的数组,请使用std::vector

您的代码存在其他问题:

  1. 删除while后面的分号,或者只读完整个文件后循环体只执行一次。

  2. flag=1之后添加分号。

答案 1 :(得分:4)

您正在编写C ++,为什么不使用std::vector<std::vector<int> >?如果可能(在这里)尽量不要使用原始指针。

答案 2 :(得分:1)

指针将是最佳选择...

答案 3 :(得分:0)

int array [size]可能就在C99中。 在C ++中,plain-C数组的大小应该是编译时常量。