将结果保存到for循环c ++中的文件

Posted

技术标签:

【中文标题】将结果保存到for循环c ++中的文件【英文标题】:saving the results to a file within a for loop c++ 【发布时间】:2014-11-25 18:49:56 【问题描述】:

我正在大学里做一个实验室,从 2 个不同的文件中乘以 2 个矩阵,在一个问题中我被要求在控制台上打印结果(这不是问题,它已经完成了)但是将其打印到新的保存文件是问题所在。

我对 c++ 还很陌生,所以如果错误很明显,我提前道歉:(

到目前为止,这是我的代码......

#include <iostream>
#include <fstream>
#include <string>
#include <algorithm>
using namespace std;

int main()

    ///////// my output file /////////////
    string outfile1, save;

    cout<<"Please enter the name of the file you want to save the results in"<<endl;
    cin>>outfile1;

    ofstream outfile(outfile1.c_str());

    if(!outfile)
    
        cout<<"Please drag in the right file you want the results to be saved on"<<endl;
        system("PAUSE");
        return -1;
    

    /////// sitting up the first matrix file ////////
    string matrixA;

    cout<< "Please drag file (matrix1) into this window"<<endl;
    cin>>matrixA;

    ifstream infile;
    infile.open(matrixA.c_str());

    if(!infile)
    
        cout<<"ERROR: Wrong file, please try restart program and try again."<<endl;
        return -1;
    

    string matrix1;

    int a[5][5];
    for (int i = 0; i<5;i++)
    
        for(int j = 0;j<5;j++)
        
            getline(infile,matrix1,',');
            a[i][j]= stoi(matrix1);
            cout<< a[i][j]<<" ";
        
        cout<<endl;
    
    infile.close();

    /////// sitting up the 2nd matrix file ////////
    string matrixB;

    cout<< "Please drag file (matrix2) into this window"<<endl;
    cin>>matrixB;

    ifstream infile2;
    infile2.open(matrixB.c_str());

    if(!infile2)
    
        cout<<"ERROR: Wrong file, please try restart program and try again."<<endl;
        return -1;
    

    string matrix2;
    int b[5][5];
    for (int k = 0; k<5;k++)
    
        for(int l = 0;l<5;l++)
        
            getline(infile2,matrix2,',');
            b[k][l]= stoi(matrix2);
            cout<< b[k][l]<<" ";
        
        cout<<endl;
    
    infile2.close();

    ////////////// CALCULATIONS //////////////////////
    cout<<"The product of both matrices is: "<<endl;
    int result[5][5];
    while (outfile1)
        for (int x = 0; x < 5; x++)
        
            for (int y = 0; y < 5; y++)
            

                result[x][y] = 0;
                for(int z = 0; z < 5; z++)
                

                    result[x][y] += a[x][z]*b[z][y];
                

                cout << result[x][y] <<" ";
                outfile1<< result[x][y]<<" "; // <<---------- why can i not do this?
            
            cout<<endl;
        

    system("PAUSE");
    return 0;

有没有更简单的方法?如果我尝试按原样运行代码,它会在第一个“

outfile1<<result[x][y]<<" ";

【问题讨论】:

你的意思可能是outfile &lt;&lt; result[x][y] &lt;&lt; " "; 将代码格式化为更具可读性也很有用(缩进总是有帮助的!) 【参考方案1】:

由于两个原因,您的程序无法编译。

    while (outfile1)

    outfile1 是一个std::string(输出文件名),不能转换为bool。不太清楚你试图用这段代码实现什么。

    outfile1&lt;&lt; result[x][y]&lt;&lt;" ";

    同样,outfile1std::string。你的输出流是outfile,所以你应该把它改成

    outfile << result[x][y] << " ";
    

【讨论】:

哦,我正要试一试,忘记删除了!!完全是我的坏。它奏效了。我正在使用我以前做过的类似实验室的日志,但我想我把自己和名字相似的人弄糊涂了(我太懒了)【参考方案2】:

outfile1 是字符串类型,而outfile 是流类型。在第 86 行和第 100 行将 outfile1 更改为 outfile,它应该可以按预期编译。

您可能希望以不同的方式命名变量以帮助防止出现此类错误,也许将 outfile1 命名为 outfileName

【讨论】:

以上是关于将结果保存到for循环c ++中的文件的主要内容,如果未能解决你的问题,请参考以下文章

Shell脚本for循环逐行原样输出

具有不同文件名的 for 循环中的 DataFrame 到 CSV

Kotlin【for循环】

如何将 for 循环中的 .pkl 文件附加到 for 循环中创建的 pandas 数据帧?

求大神,c语言怎么用for循环语句输出1到100的所有质数,我这么做结果出来的是2到100的所有数

将输出重定向到for循环shell中特定目录中的多个文件