逐行读取数组3个值

时间:2016-09-21 21:04:12

标签: c++ arrays

我想通过3行值读取我的数组行3个值。所以当我恢复3个值放入我的矩阵等等...

for(int i=0; i<_height; i++) {
    for(int j=0; j<_width; j++) {
        result = ifile.get();
        (image)[i][j]= (int)result;
        // Display the array which contains data
        cout << (image)[i][j] << " ";
    }
    cout << endl;
}

2 个答案:

答案 0 :(得分:1)

试试这个:

for (unsigned int row = 0; row < 3; ++row)
{
    for (unsigned int column = 0; column < 3; ++column)
    {
        inFile >> image[row][column];
    }
}

由于您的值由&#34;空格&#34;(空格,制表符或换行符)分隔,无论所有值是在一行还是多行,这都应该有效。

编辑1:更安全的替代
以上假设总是有9个值,它们都是有效的整数。 如果出现问题,上述情况就不会奏效。以下是一种更强大的方法。

unsigned int row = 0;
unsigned int column = 0;
bool all_values_read = false;
int value = 0;
while ((inFile >> value) && !all_values_read)
{
  image[row][column] = value;
  ++column;
  if (column >= 3)
  {
      column = 0;
      ++row;
      if (row >= 3)
      {
         all_values_read = true;
      }
  }
}

答案 1 :(得分:0)

您可以实现以下内容:

int count = 0;
for(int i=0; i<_height; i++) {
    for(int j=0; j<_width; j = j +3) {
        result = ifile.get(i,j);
        (image)[i][count]= (int)result;
        count += 1;
        // Display the array which contains data
        cout << (image)[i][count] << " ";
    }
    count = 0;
    cout << endl;
}

get(int i, int j)函数是一个函数,它从j+3行的j行开始恢复三个值(如果行在i-th之前结束,则更少)