创建循环以在C ++中编写多个文件?

时间:2015-03-25 02:53:58

标签: c++ printf fstream ifstream

假设我有一个程序执行以下操作:

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函数输出值。我最初试图节省空间并排除这个,但我只是引起了混乱

2 个答案:

答案 0 :(得分:0)

忽略代码中的所有语法错误......

  1. 使用输入值i计算输出文件名。
  2. 使用文件名构建ofstream
  3. 使用ofstreamvar写入。
  4. 这是函数的样子:

    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");
}