我正在尝试实现的是根据程序用户的请求将两个单独的文本文件中的矩阵打印到控制台中。但是,将来需要在矩阵上执行操作,所以有人告诉我,我需要让程序将文本文件识别为矩阵。如果这有意义吗?
所以我试了一下,这是我到目前为止的代码。所以对于Matrix A,我得到的只是
1
1
1
我想要的地方
1 0 0
0 2 0
0 0 3
至于矩阵B井,这是因为它打印文本文件但不会将其作为矩阵读取。
我只是不知道如何得到我需要的东西,所以如果有人能帮助那就太棒了!
#include <iostream> //declaring variables
#include <iomanip>
#include <string>
#include <fstream>
using namespace std;
string code(string& line);
int main()
{
int MatrixA[3][3] = {{1,0,0},{0,2,0},{0,0,3}};
ofstream outf;
ifstream myfile;
string infile;
string line;
string outfile;
cout << "Please enter an input file (A.txt) for Matrix A or (B.txt) for Matrix B" << endl;
cin >> infile; //prompts user for input file
if (infile == "A.txt")
{ //read whats in it and write to screen
myfile.open("A.txt");
cout << endl;
while (getline (myfile, line))
cout << MatrixA[0][0] << endl;
}
else
if (infile == "B.txt")
{
myfile.open("B.txt");
cout << endl;
while (getline (myfile, line))
cout << line << endl;
}
else
{
cout << "Unable to open file." << endl;
}
//{
//while("Choose next operation");
//}
return 0;
}
我现在有了这个
if (infile == "A.txt")
{ //read whats in it and write to screen
int j=0;
myfile.open("A.txt");
cout << endl;
while (line>>MatA[j][0]>>MatA[j][1]>>MatA[j][2]); j++;
//while (getline (myfile, line))
cout << line << endl;
//float elements[9];
//ifstream myfile("A.txt");
//myfile >> elements[0] >> elements[1] >> elements[2];
//myfile >> elements[3] >> elements[4] >> elements[5];
//myfile >> elements[6] >> elements[7] >> elements[8];
//myfile.close();
但是'line&gt;&gt;'是&gt;&gt;有一个错误说没有运算符匹配这些操作数?你能解释一下这意味着什么吗?关于如何解决的建议?
答案 0 :(得分:1)
在上面的代码中将cout << MatrixA[0][0] << endl;
替换为cout << line << endl;
。不确定我是否理解“识别为矩阵”的含义。文本文件是一个文本文件,仅此而已。如果您的数据不正确,则无法确定它是否为矩阵,除非您进行了一些错误检查(例如确保每行包含相同数量的元素)。
答案 1 :(得分:1)
这是一个完整的代码,可以从文件中加载3 x 3矩阵并显示它。希望它有所帮助。
#include <iostream>
#include <string>
#include <sstream>
#include <fstream>
using namespace std;
int main()
{
ifstream myfile("A.txt");
string line;
int MatA[3][3];
int i=0;
while (getline (myfile, line))
{
std::stringstream ss(line);
for(int j=0; j<3; j++)
ss >> MatA[i][j]; // load the i-th line in the j-th row of mat
i++;
}
// display the loaded matrix
for(int i=0; i<3; i++)
{
for(int j=0; j<3; j++)
cout<<MatA[i][j]<<" ";
cout<<endl;
}
}