在循环 cpp 中写入文件
Write to file in a loop cpp
循环
中和循环外写入文件的一般问题:
假设我有以下代码:
# include <iostream>
# include <string>
# include <fstream>
# include <sstream>
using namespace std;
void printToFile(string name, double **Array)
{
ofstream myfile;
myfile.open(name);
for (unsigned int m=0; m<5; m++)
{
for (unsigned int n=0; n<10; n++)
{
myfile << Array[m][n] << " ";
}
}
myfile.close();
}
int main()
{
int i,j;
double **Arr;
string str;
ostringstream oss;
for (i=0; i<5; i++)
{
for (j=0; j<10; j++)
{
// some calculation that yields Arr with size [5][10]
str="";
oss << "Arr_j_"<<j+1<<"_i_"<<i+1<<".txt";
str = oss.str();
printToFile(str,Arr);
}
}
return 0;
}
我似乎无法正确获得文件名,我得到的是:
Arr_j_1_i_1.txtArr_j_2_i_1.txtArr... etc
另外,我的代码运行完成,但输出文件在i=2
停止,我也希望对使用哪种蒸汽(ostream
、fstream
、sstream
等)发表评论。
每次迭代后,您永远不会清除ostringstream
。 要自动为您执行此操作,您只需将oss
声明移动到循环中即可。 这样,在每次循环之后,流将被销毁,您将在下一次迭代中从新流开始。
for (i=0; i<5; i++)
{
for (j=0; j<10; j++)
{
ostringstream oss;
// some calculation that yields Arr with size [5][10]
oss << "Arr_j_"<<j+1<<"_i_"<<i+1<<".txt";
printToFile(oss.str(),Arr);
}
}
我还删除了str=""
和str = oss.str();
,因为它不需要。 您可以使用oss.str()
作为参数来printToFile
并摆脱str
。
我不确定它是否会更快,但您可以避免使用任何类型的字符串流,并使用 std::to_string
在函数调用中构造字符串,将索引转换为字符串。 那看起来像
for (i=0; i<5; i++)
{
for (j=0; j<10; j++)
{
// some calculation that yields Arr with size [5][10]
printToFile("Arr_j_" + std::to_string(j+1) + "_i_" + std::to_string(i+1) + ".txt", Arr);
}
}
在
循环中声明str和oss,你没有清除OSS
for (i=0; i<5; i++)
{
for (j=0; j<10; j++)
{
// some calculation that yields Arr with size [5][10]
string str;
ostringstream oss;
oss << "Arr_j_"<<j+1<<"_i_"<<i+1<<".txt";
str = oss.str();
printToFile(str,Arr);
}
}
相关文章:
- 我正在使用嵌套的while循环来解析具有多行的文本文件,但由于某种原因,它只通过第一行,我不知道为什么
- 使用fstream对txt文件中的数字进行循环
- 视觉 如何循环访问C++中遵循类似格式的多个.txt文件?
- C/C++:socket() 创建在循环中失败,打开的文件太多
- 逐字读取文本文件中的每一行并转换为 int(无限循环或崩溃?
- 虽然循环不读取整个 ifstream 文件
- 如何在头文件中声明类模板(由于循环依赖关系)
- 如何使用循环逐个读取C++中的多个文件
- 是否可以在文本文件中找到最长单词的长度,并在同一个文本文件中读取,只需 1 个 while 循环?
- 如何循环 n 次,在 xml 文件中每个循环一个级别
- 如何通过一个循环将多个文件的内容分配给不同的类属性?
- 从文件 C++ 读取时的无限循环
- 从文件读取,并循环访问文件以写入数组
- 从文件导入数据时遇到问题.我有一个没完没了的循环
- C++:从文件中读取x y数据会产生无限循环吗
- 从文件循环输入的更合适方法?
- 通过C(或C )中的WAV文件循环
- 有没有办法仅通过JPG文件循环
- 从文件循环输入流
- c++单文件循环引用