C++ 我不知道如何从文件中读取矩阵的常量值
我很困惑,如果你对我的问题感到困惑,我也不会感到惊讶。我要做的是创建一个程序,从文件中读取向量/矩阵维度/内容,创建数组,然后执行操作C++ 我不知道如何从文件中读取矩阵的常量值,c++,pointers,file-io,matrix,matrix-multiplication,C++,Pointers,File Io,Matrix,Matrix Multiplication,我很困惑,如果你对我的问题感到困惑,我也不会感到惊讶。我要做的是创建一个程序,从文件中读取向量/矩阵维度/内容,创建数组,然后执行操作 ifstream in("input.txt"); stringstream buffer; buffer << in.rdbuf(); string test = buffer.str(); string line; ifstream file("input.txt"); string contents; int* conv; while (g
ifstream in("input.txt");
stringstream buffer;
buffer << in.rdbuf();
string test = buffer.str();
string line;
ifstream file("input.txt");
string contents;
int* conv;
while (getline(file, line)){
*conv = atoi(line.c_str());
//cout << conv << endl;
size_t pos = line.find("#");
contents = line.substr(pos + 1);
//cout << contents << endl;
}
int row = conv[4];
int column = conv[5];
int aMatrix[row];
file.close();
cin.get();
很明显,我得到的错误是,我必须有一个常量。但是,由于我正在从文件中读取,所以在读取文件之前,我不确定如何获取常量
该文件包含诸如34123456789123之类的行,这些行转换为包含1234…3内容的3 x 4矩阵。上面的大部分代码都是我如何读入文件,将字符串分为大小和内容,并将它们转换为int
函数的参数为例如矩阵*矩阵:
int** mxm(int **A, int **B, int rowsA, int colsA, int rowsB, int colsB){
int** value = NULL;
for (int i = 0; i < rowsA; i++){
for (int j = 0; i < colsA; i++){
for (int k = 0; k < colsB; k++){
**value += A[i][j] * B[i][k];
}
}
}return value;
}
编辑:我应该提到,虽然我可以清楚地看到该矩阵是3x4,但下一个矩阵是4x3。当我运行程序时,我不应该有任何输入,程序应该能够通过读取文件来完成。如果需要创建数组,并且在运行时之前您不知道数组的大小,则需要使用指针。你可以这样做:
int rows;
std::cout << "Rows: ";
std::cin >> rows;
int * values = new int[rows];
// when done call delete [];
delete [] values;
如果需要进行2个尺寸标注,则可以使用:
int rows, cols;
std::cout << "Rows: ";
std::cin >> rows;
std::cout << "Cols: ";
std::cin >> cols;
int ** values = new int[rows];
for (int i = 0; i < rows; i++)
values[i] = new int[cols];
// when done call delete [] for both dimensions;
for (int i = 0; i < rows; i++)
delete [] values[i];
delete [] values;
*conv=。。。这将调用未定义的行为,因此您可能会遇到比您想象的更多的问题。conv是一个不确定的指针。你应该用一个类来表示你的矩阵,而不是一个int**我确实需要使用二维,因为它是一个矩阵,但是用这种方式,cout/cin组合不会要求我输入行数和列数吗?因为我不能输入任何东西,所以我必须从文件中读取它。@user3768611:我只是演示如何获取值和创建数组。如果您使用文件流获取行和列信息,则在创建数组时仍会执行相同的操作。这是一种基本方法,不需要执行。有些容器可以在运行时调整大小,例如std::vector。@MattMcNabb:我应该举一个例子,说明如何使用vector实现这一点吗?我只是在用指针,因为OP就是这么用的。