将结果保存到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 << result[x][y] << " ";
将代码格式化为更具可读性也很有用(缩进总是有帮助的!)
【参考方案1】:
由于两个原因,您的程序无法编译。
while (outfile1)
outfile1
是一个std::string
(输出文件名),不能转换为bool
。不太清楚你试图用这段代码实现什么。
outfile1<< result[x][y]<<" ";
同样,outfile1
是 std::string
。你的输出流是outfile
,所以你应该把它改成
outfile << result[x][y] << " ";
【讨论】:
哦,我正要试一试,忘记删除了!!完全是我的坏。它奏效了。我正在使用我以前做过的类似实验室的日志,但我想我把自己和名字相似的人弄糊涂了(我太懒了)【参考方案2】:outfile1
是字符串类型,而outfile
是流类型。在第 86 行和第 100 行将 outfile1
更改为 outfile
,它应该可以按预期编译。
您可能希望以不同的方式命名变量以帮助防止出现此类错误,也许将 outfile1
命名为 outfileName
。
【讨论】:
以上是关于将结果保存到for循环c ++中的文件的主要内容,如果未能解决你的问题,请参考以下文章
具有不同文件名的 for 循环中的 DataFrame 到 CSV
如何将 for 循环中的 .pkl 文件附加到 for 循环中创建的 pandas 数据帧?