假设我有一个程序执行以下操作:
for (i=1; i<10; i++)
{
computeB(i);
}
computeB
只输出值列表
computeB(int i)
{
char[6] out_fname="output";
//lines that compute `var` using say, Monte Carlo
string fname = out_fname + (string)".values";
ofstream fout(fname.c_str());
PrintValue(fout,"Total Values", var);
}
来自另一个档案:
template <class T>
void PrintValue(ofstream & fout, string s, T v) {
fout << s;
for(int i=0; i<48-s.size(); i++) {
fout << '.';
}
fout << " " << v << endl;
}
在实现该循环之前,computeB
只输出了一个值文件。我现在想要它创建多个值。因此,如果它最初创建一个名为“output.values”的文件,我怎么能写一个循环,以便创建“output1.values”,“output2.values”,...,“output9.values”?
编辑:我忘了提到原始代码使用PrintValue
函数输出值。我最初试图节省空间并排除这个,但我只是引起了混乱
答案 0 :(得分:0)
忽略代码中的所有语法错误......
i
计算输出文件名。ofstream
。ofstream
将var
写入。这是函数的样子:
void combuteB(int i)
{
char filename[100];
sprintf(filename, "output%d.values", i);
ofstream fout(filename);
fout << "total values";
fout << " " << var << endl; // Not sure where you get
// var from. But then, your
// posted code is not
// exactly clean.
}
答案 1 :(得分:0)
您可以使用std::to_string()
从int
转换为string
:
void computeB(int i)
{
if (std::ofstream fout("output" + std::to_string(i) + ".values"))
fout << "total values" << " " << var << '\n';
else
throw std::runtime_error("unable to create output file");
}