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