C++ 使用外部文件作为C++;
如何使用名为dados.txt的文件作为两个数组相乘的输入数据? 也就是说,我不想使用cin,而是读取数据文件dados.txtC++ 使用外部文件作为C++;,c++,matrix,C++,Matrix,如何使用名为dados.txt的文件作为两个数组相乘的输入数据? 也就是说,我不想使用cin,而是读取数据文件dados.txt #include <iostream> #include <fstream> #define MAX 100 using namespace std; int main() { int A[MAX][MAX], B[MAX][MAX], C[MAX][MAX]; int m, n, p, i, j, k, aux; if
#include <iostream>
#include <fstream>
#define MAX 100
using namespace std;
int main()
{
int A[MAX][MAX], B[MAX][MAX], C[MAX][MAX];
int m, n, p, i, j, k, aux;
ifstream arquivo;
arquivo.open("dados.txt");
while (arquivo >> aux)
{
//cin >> m >> n >> p;
//read dados.txt
for (i = 0; i < m; i++)
for (j = 0; j < n; j++)
cin >> A[i][j];
for (i = 0; i < n; i++)
for (j = 0; j < p; j++)
cin >> B[i][j];
for (i = 0; i < m; i++)
for (j = 0; j < p; j++)
{
C[i][j] = 0;
for (k = 0; k < n; k++)
C[i][j] += A[i][k] * B[k][j];
}
for (i = 0; i < m; i++)
{
for (j = 0; j < p; j++)
cout << C[i][j] << " ";
cout << endl;
}
}
arquivo.close();
return 0;
}
您正在寻找此参考:
fstream对象将允许您打开一个文件,并以各种方式读取其内容。将代码中的
cin
替换为arquivo
,您就完成了(前提是逻辑正常)
像
给这个对象起一个更常规的名字(比如
fin
或filein
)不会有什么坏处。你的ifstream arquivo
实际上与std::cin
属于一个类似的类,所以你可以用完全相同的方式使用它:`arquivo>>m>>n>>p;“
但是我不理解
aux
变量,您想用它做什么?Chris的链接是正确的。
您可以这样做:(在cplusplus.com网站上查看示例)
#包括
#包括
#包括
使用名称空间std;
int main(){
弦线;
ifstream myfile(“example.txt”);
如果(myfile.is_open())
{
while(myfile.good())
{
getline(myfile,line);
您已经在通过声明的文件流读取文件了,arquivo。您只需执行arquivo>>A[i][j],而不是执行cin>>A[i][j]。但您还需要从while条件中取出arquivo>>aux。按照您的设置方式,似乎您确切知道循环的长度。您甚至不需要while循环。这部分代码可以是:
arquivo.open("dados.txt");
for (i = 0; i < m; i++)
for (j = 0; j < n; j++)
arquivo >> A[i][j];
for (i = 0; i < n; i++)
for (j = 0; j < p; j++)
arquivo >> B[i][j];
for (i = 0; i < m; i++)
for (j = 0; j < p; j++)
{
C[i][j] = 0;
for (k = 0; k < n; k++)
C[i][j] += A[i][k] * B[k][j];
}
for (i = 0; i < m; i++)
{
for (j = 0; j < p; j++)
cout << C[i][j] << " ";
cout << endl;
}
arquivo.close();
arquivo.open(“dados.txt”);
对于(i=0;i>A[i][j];
对于(i=0;i>B[i][j];
对于(i=0;i cout您可以从这样的文本文件中读取数字
打开文件流
ifstream DataFile;
DataFile.open (fileLocation.c_str(), ios::in); //assume fileLocation is a string type
读取并存储一行输入
string input;
getline(DataFile, input);
然后,您可以使用各种方法从该字符串中提取数字(例如操纵字符串的方法,将cstring转换为int/float)。这取决于您对文本文件的外观了解多少
arquivo.open("dados.txt");
for (i = 0; i < m; i++)
for (j = 0; j < n; j++)
arquivo >> A[i][j];
for (i = 0; i < n; i++)
for (j = 0; j < p; j++)
arquivo >> B[i][j];
for (i = 0; i < m; i++)
for (j = 0; j < p; j++)
{
C[i][j] = 0;
for (k = 0; k < n; k++)
C[i][j] += A[i][k] * B[k][j];
}
for (i = 0; i < m; i++)
{
for (j = 0; j < p; j++)
cout << C[i][j] << " ";
cout << endl;
}
arquivo.close();
ifstream DataFile;
DataFile.open (fileLocation.c_str(), ios::in); //assume fileLocation is a string type
string input;
getline(DataFile, input);