函数,它接受字符串和数字作为创建文件名的参数


Function, that takes string and number as parameter for creating filename

我必须在一个循环中创建不同的数据文件。我想生成三种文件类型,如

typeA % 00 d.txt,

typeB%00d.txt和

typeC % 00 d.txt

为此,我想实现一个函数,它接受一个序号和一个字符串作为参数。

类似如下:

void make_file(paarvec data, int count){ 
 int size = data.size();
 char filename[160];
 sprintf(filename, "name%03d.txt", count);
 ofstream out_data(filename);
 for(int n=0; n<size; ++n){
    out_data << data[n].first << "'t" << data[n].second << endl;
    }
 out_data.close();
}

但是有没有一种方法,我也可以用一个参数来改变文件的"名称"?这样我就可以写:

std::string timestring = "timedata";
std::string timestring = "pathdata";
...
for(int i=0; i<N; ++i){
  ...
  make_file(time_data, timestring ,count);
  make_file(frac_data, fracstring ,count);
  make_file(path_data, pathstring ,count);
}  

只需将函数更改为:

void make_file(paarvec data, const std::string &name, int count){ 
  int size = data.size();
  char filename[160];
  snprintf(filename, sizeof(filename), "%s%03d.txt", name.c_str(), count);
  ...

注意我将sprintf更改为snprintf -这是一个好习惯,可以防止代码中的坏意外,如缓冲区溢出。