C++ 如何使用for循环将数据保存在不同的文件中?
在下面的代码中,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,依此类推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++)
#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()与更新字符串名称一起在循环中。