C ++从txt文件读取数据并将其放入2d数组

时间:2018-04-22 14:04:51

标签: c++ c++11

我有一个文件,数字用单个空格分隔,我想将它们放入2D数组中。每行有200行和320个数字。 这是我的代码:

int data[200][320];
int i = 0;
int j = 0;

file.open("./../../../Data_PR2/data.txt", ios::in);

while (file>> data[i][j])
{
    if (j == 319) {
        j = 0;
        i++;
    } else
        j++;
}

它有点工作,因为第一行是正确插入但不是所有行。

那有什么不对?

1 个答案:

答案 0 :(得分:1)

更简单的方法是使用/%代替if语句:

unsigned int count = 0;
unsigned int row = 0; 
unsigned int column = 0;
while (file >> data[row][column])
{
  ++count;
  column = count % 320;
  row = count / 320;
}

也许更有效的方法是将数组视为单维数组,因为所有插槽都是连续的:

int * p_slot = &data[0][0];
while (file >> *p_slot)
{
  ++p_slot;
}

还有其他方法,例如输入迭代器

以上示例不检查溢出。溢出检查留给读者练习。 : - )

注意:这不是优化,而是简化。格式转换,越界检查和输入过程,使优化没有实际意义。最大的优化是将更大的块读入内存,然后从内存中读取;但是对于这个尺寸,这是不值得的。