C++ 如何使用for循环将数据保存在不同的文件中?

C++ 如何使用for循环将数据保存在不同的文件中?,c++,C++,在下面的代码中,for循环返回5个值[0,1,2,3,4]。我想得到5个名为h_0.0、h_1.0、h_2.0、h_3.0、h_4.0和h_0.0的文本文件,它们应该存储for循环的第一个数字,即0个文件h_1.0应该存储for循环的第二个数字,即1,依此类推 #include <iostream> using namespace std; int *name() { static int n[5]; for (int i = 0; i < 5; i++)

在下面的代码中,for循环返回5个值[0,1,2,3,4]。我想得到5个名为h_0.0、h_1.0、h_2.0、h_3.0、h_4.0和h_0.0的文本文件,它们应该存储for循环的第一个数字,即0个文件h_1.0应该存储for循环的第二个数字,即1,依此类推

#include <iostream>
using namespace std;

int *name()
{
    static int n[5];
    for (int i = 0; i < 5; i++)
    {
        n[i] = i;
    }
    return n;
}

int main()
{
    int *p;
    p = name();
    for (int i = 0; i < 5; i++)
    {
        cout << *(p + i) << endl;
    }
    return 0;
}
#包括
使用名称空间std;
int*name()
{
静态int n[5];
对于(int i=0;i<5;i++)
{
n[i]=i;
}
返回n;
}
int main()
{
int*p;
p=名称();
对于(int i=0;i<5;i++)
{

cout如果我很了解你想要做什么,这里有一些基本的解决方案,用于演示, 正在当前文件夹中创建文件:

#include <iostream>
#include <fstream>
#include <sstream>
using namespace std;

int* name() {
    static int n[5];
    for (int i = 0; i < 5; i++) {
      n[i] = i;
    }
    return n;
}

int main() {
    int* p;
    p = name();
    for (int i = 0; i < 5; i++)
    {
        int fn = *(p + i);
        std::stringstream ss;
        ss << fn;
        std::string fname = "h_" + ss.str();
        fname += ".0";
        std::ofstream f(fname.c_str());
        if (f.good()) {
            f << fn;
            cout << "file h_" << fn << ".0 created" << endl;
        }
    }
    return 0;
}
#包括
#包括
#包括
使用名称空间std;
int*name(){
静态int n[5];
对于(int i=0;i<5;i++){
n[i]=i;
}
返回n;
}
int main(){
int*p;
p=名称();
对于(int i=0;i<5;i++)
{
int fn=*(p+i);
std::stringstream-ss;
ss使用文件流

#include <fstream>  // include filestream
#include <sstream>  // for storing anything that can go into a stream
#include <string>

int main()
{

    std::string nameholder;
    std::ofstream outputstream;

    for (int i = 0; i < 5; i++)
    {
        nameholder = "h_";  // reset name every loop
        std::stringstream sstreamholder;   // remake stringstream every loop
        sstreamholder << i;   // store current number in stringstream
        nameholder += sstreamholder.str() + ".0";  // append what sstreamholder currenlty has and the file extension .0
        outputstream.open(nameholder);  // write the filename with the updated name
        outputstream << i << std::endl;  // write the number in the file
        outputstream.close();  // close the file so it's ready for the next open
    }
    return 0;
}
#include//include filestream
#包含//用于存储任何可以进入流的内容
#包括
int main()
{
std::字符串名称持有者;
std::流输出流;
对于(int i=0;i<5;i++)
{
nameholder=“h”;//重置每个循环的名称
std::stringstream sstreamholder;//每个循环重新生成stringstream

sstreamholder for循环从0开始,在4结束。在python中,我将提到h_%s%(I),其中I是我的循环索引。在您的解决方案中,您提到了fname=“.0”。如何将其替换为for循环索引I?此外,您能否解释最后一个if语句的用途?f.good()
static int n[5]
和随后的
for
循环可以是
static int n[]={1,2,3,4,5};
再考虑一下,
static int n[]={1,2,3,4,5};
可以替换整个name函数。
std::stringstream ss;
和friends可以替换为
std::string fname=“h_”+std::to_string(fn)+.0”
这就引出了一个新的想法
静态字符串名[]={“h_1.0”,“h_2.0”,…};
并且大部分问题都解决了。@jerry从你的问题中我得出结论,好像你希望你的所有文件都有.0,比如说扩展名,但是如果你喜欢.1.2等扩展名,你可以简单地用fname+=“+ss.str()替换适当的行;但我想得到5个名为h_0.0、h_1.0、h_2.0、h_3.0、h_4.0和h_0.0的文本文件应该存储for循环的第一个数字,即0文件h_1.0应该存储for循环的第二个数字,即1,依此类推,在这种情况下,只需将数字附加到open()的字符串中,并在该逻辑中工作。放入open()与更新字符串名称一起在循环中。