我在c ++中有一个非常基本的问题,我正在读取一个制表符分隔文件,我想要声明一个带有维度的数组,如果文件有的字段数(使用不同宽度的不同文件),所以我需要为了读取第一行并计算字段数,我试过这个:
while(getline(t, line));{
...
if(!flag)
{int array[size][5];
flag=1}
...
}
但后来我收到了错误:
错误:未在此范围内声明'array'
我理解这是因为变量的范围在if循环中,有没有办法声明一个空数组并调整它的大小?或者我必须使用指针?
答案 0 :(得分:6)
数组的大小必须是编译时常量。如果需要动态大小的数组,请使用std::vector
。
您的代码存在其他问题:
删除while
后面的分号,或者只读完整个文件后循环体只执行一次。
在flag=1
之后添加分号。
答案 1 :(得分:4)
您正在编写C ++,为什么不使用std::vector<std::vector<int> >
?如果可能(在这里)尽量不要使用原始指针。
答案 2 :(得分:1)
指针将是最佳选择...
答案 3 :(得分:0)
int array [size]可能就在C99中。 在C ++中,plain-C数组的大小应该是编译时常量。