C++ 创建二维字符矩阵时出现问题

C++ 创建二维字符矩阵时出现问题,c++,char,C++,Char,我一直在尝试许多不同的方法从文本文件输入的数据创建2D矩阵。然而,我每次尝试都会遇到错误。下面代码中的方法是错误最少的方法,但我仍然在返回对象上得到一个错误,表示我正在使用未初始化的内存“矩阵”。道歉是如果这是一个简单的修复,我对C++是非常新的。 我以前尝试过向量的向量,但遇到了获取错误维度的问题。如果有人有更好的方法从文本文件创建字符矩阵,请让我知道 char** GetMap(int& M, int& N) //function to get the map of a ro

我一直在尝试许多不同的方法从文本文件输入的数据创建2D矩阵。然而,我每次尝试都会遇到错误。下面代码中的方法是错误最少的方法,但我仍然在返回对象上得到一个错误,表示我正在使用未初始化的内存“矩阵”。道歉是如果这是一个简单的修复,我对C++是非常新的。 我以前尝试过向量的向量,但遇到了获取错误维度的问题。如果有人有更好的方法从文本文件创建字符矩阵,请让我知道

char** GetMap(int& M, int& N) //function to get the map of a room
{

    int M = 0; // initializing rows variable
    int N = 0; // initializing columns variable
    char** matrix; //give a matrix

    cin >> M >> N;

    for (int rows = 0; rows < M; rows++)
    {
        for (int cols = 0; cols < N; cols++)
        {
            cin >> matrix[rows][cols];
        }
    }

    return matrix;
}
char**GetMap(int&M,int&N)//获取房间地图的函数
{
int M=0;//初始化行变量
int N=0;//初始化列变量
char**matrix;//给出一个矩阵
cin>>M>>N;
对于(int行=0;行>矩阵[行][cols];
}
}
收益矩阵;
}

首先,让我告诉您,您在
std::cin
输入中请求
M
N
,但您已经将它们作为函数的参数
char**GetMap(int&M,int&N)

现在,您可能需要在本例中使用
std::vector
。事实上,你想用你的两个变量m和n初始化你的<代码> char *Matrix ,这在C++中是不允许的。 解决此问题的一个好方法是使用
std::vector matrix
而不是
char**matrix
。这里有一个解决方案,它可以满足您的期望

std::vector<std::vector<char>> GetMap(int& M, int& N) //function to get the map of a room
{
    std::vector<std::vector<char>> matrix{}; //give a matrix
    char char_buf;

    for (int rows = 0; rows < M; rows++)
    {
        matrix.push_back(std::vector<char>()); //Put a new empty row in your matrix
        for (int cols = 0; cols < N; cols++)
        {
            std::cin >> char_buf; //Here you get a char from std::cin
            matrix.back().push_back(char_buf); //That you push back in your sub-vector
        }
    }

    return matrix;
}
std::vector GetMap(int&M,int&N)//获取房间地图的函数
{
std::向量矩阵{};//给出一个矩阵
恰尔恰尔布夫;
对于(int行=0;行>char\u buf;//这里您从std::cin获得一个char
matrix.back().push_back(char_buf);//在子向量中向后推
}
}
收益矩阵;
}

哇,非常感谢!这似乎解决了问题。