写入变量文件名
writing to variable filename
我想用变量 r 给定的名称写入不同的文件。以下是我写的。这里的问题是,它只是打开第一个文件 'r=0.5.txt' 并在上面写入 r=0.5 的数据。但是,它不会打开和写入 r=0.6、1.0 的其他文件...
编辑:添加了最小、完整和可验证的示例
#include <iostream>
#include <fstream>
#include <sstream>
using namespace std;
int main()
{ //initialization
int M = 5; //no. of steps
double rvalues[] = {0.5,1.5,8.,15.,24.5};
double x,y,z,r;
//initial condition fixed pnts x*,y*,z*= (0,0,0)
double x0 = 1.5;
double y0 = 1.5;
double z0 = 1.5;
ofstream myfile;
for(unsigned int i = 0; i<sizeof(rvalues)/sizeof(rvalues[0]);i++){
r = rvalues[i];
x = x0;
y = y0;
z=z0;
stringstream ss;
cout<<"ravlues = "<<r<<endl;
ss<<"r="<<r<<".txt";
string filename = ss.str();
cout<<filename<<endl;
myfile.open(filename.c_str());
for(int j = 0; j<M;j++){
myfile<<x<<'\t'<<y<<'\t'<<z<<'\n';
x =x+j;
y = y+j;
z = z+j;
}
}
return 0;
}
您忘记在循环结束时调用 myfile.close()
。如果在 for
循环的范围内定义 myfile
会更容易。
for(unsigned int i = 0; i<sizeof(rvalues)/sizeof(rvalues[0]);i++){
r = rvalues[i];
x = x0;
y = y0;
z=z0;
stringstream ss;
cout<<"ravlues = "<<r<<endl;
ss<<"r="<<r<<".txt";
string filename = ss.str();
cout<<filename<<endl;
ofstream myfile(filename.c_str()); // Move it inside the loop.
for(int j = 0; j<M;j++){
myfile<<x<<'\t'<<y<<'\t'<<z<<'\n';
x =x+j;
y = y+j;
z = z+j;
}
}
我想用变量 r 给定的名称写入不同的文件。以下是我写的。这里的问题是,它只是打开第一个文件 'r=0.5.txt' 并在上面写入 r=0.5 的数据。但是,它不会打开和写入 r=0.6、1.0 的其他文件... 编辑:添加了最小、完整和可验证的示例
#include <iostream>
#include <fstream>
#include <sstream>
using namespace std;
int main()
{ //initialization
int M = 5; //no. of steps
double rvalues[] = {0.5,1.5,8.,15.,24.5};
double x,y,z,r;
//initial condition fixed pnts x*,y*,z*= (0,0,0)
double x0 = 1.5;
double y0 = 1.5;
double z0 = 1.5;
ofstream myfile;
for(unsigned int i = 0; i<sizeof(rvalues)/sizeof(rvalues[0]);i++){
r = rvalues[i];
x = x0;
y = y0;
z=z0;
stringstream ss;
cout<<"ravlues = "<<r<<endl;
ss<<"r="<<r<<".txt";
string filename = ss.str();
cout<<filename<<endl;
myfile.open(filename.c_str());
for(int j = 0; j<M;j++){
myfile<<x<<'\t'<<y<<'\t'<<z<<'\n';
x =x+j;
y = y+j;
z = z+j;
}
}
return 0;
}
您忘记在循环结束时调用 myfile.close()
。如果在 for
循环的范围内定义 myfile
会更容易。
for(unsigned int i = 0; i<sizeof(rvalues)/sizeof(rvalues[0]);i++){
r = rvalues[i];
x = x0;
y = y0;
z=z0;
stringstream ss;
cout<<"ravlues = "<<r<<endl;
ss<<"r="<<r<<".txt";
string filename = ss.str();
cout<<filename<<endl;
ofstream myfile(filename.c_str()); // Move it inside the loop.
for(int j = 0; j<M;j++){
myfile<<x<<'\t'<<y<<'\t'<<z<<'\n';
x =x+j;
y = y+j;
z = z+j;
}
}