在C ++中通过变量定义常量

时间:2018-11-03 22:54:36

标签: c++ arrays c++11 variables constants

因此,我需要通过变量定义常量,以便可以在数组的定义中使用该值。这样行吗?

std::fstream scores("scores.txt");
int numberOfLines;
std::string temp;

while (std::getline(scores, temp))
{
    numberOfLines++;
}

const int numberOfLines1 = numberOfLines;
int scoresArr [numberOfLines1] = {};
scores.close();

2 个答案:

答案 0 :(得分:2)

  

这项工作可以吗?

简短回答:否。

长答案。

C样式的数组(在标准C ++中)需要编译时已知的大小。

所以

// ............vvvvvvvvvvvvvv  <-- compile time constant, please
int scoresArr [numberOfLines1] = {};

numberOfLines1 必须是已知的编译时间。

不幸的是,在您的代码中,numberOfLines1的值是未知的编译时间,但显然未初始化(因此以未定义的值开头)

int numberOfLines;  // <-- initialized with an undefined value

并增加了依赖于外部文件的次数,因此必须增加运行时间

while (std::getline(scores, temp))
{
    numberOfLines++;
}

所以:不,不行。

答案 1 :(得分:0)

您可以使用int *scoresArr = new int[numberOfLines1];

并随后使用delete [] scoresArr

释放空间