c++ - 写入变量文件名

标签 c++ filenames fstream ofstream

我想用变量 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;
    }
}

关于c++ - 写入变量文件名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28634713/

相关文章:

c++ - 为什么同时包含 <iostream> 和 <fstream>

c++ - 在C++中,有没有一种方法可以转到文本文件中的特定行?

c++ - 指向已分配对象的指针没有值语义是什么意思?

c++ - 为什么类成员变量不允许在 PPL 中为 [ &A, &B ]

c++ - 如何强制 new 运算符返回的指针为 32 字节对齐

php - 使用PHP重命名带有空格的文件

batch-file - 使用 .bat 重命名文件名?

c++ - 写入文件时遇到问题(ofstream)

c++ - 为什么自定义 QGraphicsItem 会导致场景或 View 移动,除非 boundingRect 为空?

c++ 将 char* 的 ascii 字符转换为 unix 文件名