2D数组值像数组一样传递,0不打印

  • 本文关键字:数组 打印 一样 2D c++
  • 更新时间 :
  • 英文 :


我正在处理此代码,我不明白为什么从文件中读取矩阵不会输出正确的矩阵,而只是将所有值推入所有值!= 0一个阵列,不打印0。谢谢。

#include <iostream>
#include <fstream>
#include <array>
using namespace std;
#define M 4
#define N 4
int** inputArray();
void printArray(int** matrix);
int main()
{
  int **matrix;
  matrix = inputArray();
  printArray(matrix);
  return 0;
}
void printArray(int** matrix)
{
for (int i=0; i<M; i++)
    {
        for(int j=0; j<N; j++)
        {
            cout << matrix[i][j];
        }
        cout << endl;
    }
}
int** inputArray()
{
int** matrix=new int*[N];
int value;
ifstream matrice("matrix.txt");
    if (matrice.is_open())
    {
        do
        {
            for (int i=0; i<N; ++i)
            {
                matrix[i]=new int[M];
                for(int j=0; j<M; j++)
                {
                    matrice >> matrix[i][j];
                    //cout << matrix[i][j];
                }
            }   
        } 
        while (matrice>>value);
        matrice.close();
        return matrix;
    }
    else cout << "Unable to open file";
}

我尝试使用的矩阵是:3418016300230001

该程序应精确打印出我正在从文件中读取的矩阵。

您的输入处理方式是错误的!由于一排中的每个元素都不被空间分开,因此应将输入作为字符串或字符。

例如:

#include <iostream>
#include <fstream>
#include <array>
using namespace std;
#define M 4
#define N 4
int** inputArray();
void printArray(int** matrix);
int main()
{
  int **matrix;
  matrix = inputArray();
  printArray(matrix);
  return 0;
}
void printArray(int** matrix)
{
for (int i=0; i<M; i++)
    {
        for(int j=0; j<N; j++)
        {
            cout << matrix[i][j];
        }
        cout << endl;
    }
}
int** inputArray()
{
   int** matrix=new int*[N];
   int value;
   ifstream matrice("matrix.txt");
    if (matrice.is_open())
    {
            for (int i=0; i<N; ++i)
            {
                string x;
                matrice>>x;
                matrix[i]=new int[M];
                for(int j=0; j<M; j++)
                {
                     matrix[i][j]=x[j]-'0';
                    //cout << matrix[i][j];
                }
            }
        matrice.close();
        return matrix;
    }
    else cout << "Unable to open file";
}

我在这里使用了字符串。Matrice>> x将输入直到获得空白或纽线为止。输入后,通过字符串迭代并使用x [j] - '0'将每个字符转换为数字,并在其单元格上添加了每个元素。

最新更新