我有47个不同的文件:
在名为 / data 的目录中。我需要将每个模板文件与三个不同的查询文件进行比较,也在目录中。这些被命名为:
我知道如何让所有这些都运行,但我将不得不将这6行代码剪切并粘贴46次,程序会变得非常冗长和令人困惑。
是否有一种好方法可以循环遍历这些文件?可能通过循环模板文件然后对每个模板进行三次查询?我显然已经定义了相似度函数和排序函数,以及inputFile
。这是我想要转换的代码:(不是作业,这是我一直在做的面部表情识别项目)
int main()
{
vector<float> temp01;
vector<float> temp12;
vector<float> temp17;
temp01 = similar(inputFile("data/001_AU01_query.dat"), inputFile("data/001_template.dat"));
sortAndOutput(temp01);
temp12 = similar(inputFile("data/001_AU12_query.dat"), inputFile("data/001_template.dat"));
sortAndOutput(temp12);
temp17 = similar(inputFile("data/001_AU17_query.dat"), inputFile("data/001_template.dat"));
sortAndOutput(temp17);
}
答案 0 :(得分:0)
使用两个包含文件和模板名称的数组并循环它们:
char* files[47] = {"file1", "file2", ...., "file47"};
char* templates[3] = {"template1", "template2", "template3"};
并循环播放:
for(i=0; i<47; i++){
for{j=0; j<3; j++){
compare(file[i],template[j]);
}
}
答案 1 :(得分:0)
然后我会用sprintf创建文件名到循环中:
char data[100];
char template[100];
char* datas[3] = {"%3d_AU01_query.dat", "%3d_AU12_query.dat", "%3d_AU17_query.dat"};
for(i=0; i<47; i++){
for{j=0; j<3; j++){
sprintf(template, "%03d_template.dat", i); // create the name of the template 1-47
sprintf(data, datas[j], i);
compare(template, data);
}
}
我认为应该按预期工作。
答案 2 :(得分:0)
void work()
{
vector<float> temp;
char data[100];
char templates[100];
char* datas[3] = { "data/%03d_AU01_query.dat", "data/%03d_AU12_query.dat", "data/%03d_AU17_query.dat" };
for (int i = 1; i < 48; i++)
{
for(int j = 0; j < 3; j++)
{
sprintf_s(templates, "data/%03d_template.dat", i); // create the name of the template 1-47
sprintf_s(data, datas[j], i);
temp01 = similar(inputFile(data), inputFile(templates));
sortAndOutput(temp);
}
}
}