1

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

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

但后来我得到了错误:

错误:未在此范围内声明“数组”

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

4

4 回答 4

6

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

您的代码的其他问题:

  1. 删除 , 之后的分号while,否则您的循环体将仅在读取整个文件后执行一次。

  2. 后加分号flag=1

于 2012-08-09T09:24:31.730 回答
4

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

于 2012-08-09T09:26:20.947 回答
1

指针将是要走的路...

于 2012-08-09T09:23:42.987 回答
0

int array[size] 仅在 C99 中才有可能。在 C++ 普通 C 数组中,数组大小应该是编译时常量。

于 2012-08-09T10:04:53.280 回答