C++ 使用外部文件作为C++;

C++ 使用外部文件作为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

如何使用名为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;
    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;icout您可以从这样的文本文件中读取数字

打开文件流

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);