因此,我需要通过变量定义常量,以便可以在数组的定义中使用该值。这样行吗?
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();
答案 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