我正在开发一个小程序,以帮助加快我的实验室工作的某些数据分析.它应该从文本文件中读取数据,创建一堆包含该数据的数组,然后进行一些数学运算.
我一直遇到的问题是,我不知道原始文本文件将包含多少行,因此我不知道要制作多大的数组.我对C还是很陌生,现在我对动态大小的数组不满意,这是一些代码
// first determine the length of the file
ifstream dataFile ("xys_data.txt");
const int LENGTH = count(istreambuf_iterator(dataFile), istreambuf_iterator(), '
'); // counts the number of new lines
// declare vector of type datapoint
dataPoint data[LENGTH];
当我尝试编译此错误时
expected constant expression
cannot allocate an array of constant size 0
'data' : unknown size
但是我不是将长度定义为常数吗?
任何帮助将不胜感激.
编辑
遵循几乎所有人的建议,我开始使用std :: vector.我还有最后一个问题,我有点不稳定.
在程序的第一次尝试中,我定义了一个数据结构:
struct dataPoint
{
double x; // x values
double y; // y values
double s; // sigma values
};
然后,当我从文件中读取数据时,我将其发送到该结构,如下所示
while (!dataFile.eof()) // this loop writes out each row of data to the arrays x, y, s until it reaches the end of the file
{
int j = 0;
dataFile >> data[j].x >> data[j].y >> data[j].s;
j++;
}
有什么办法可以使用向量吗?我的第一个想法是定义向量x,y和s,并在循环中用x替换data [j] .x,但这是行不通的.