我有一个包含188个文件的目录,看起来像这样。
001_AU01_query.dat
001_AU12_query.dat
001_AU17_query.dat
001_template.dat
002_AU01_query.dat
002_AU12_query.dat
002_AU17_query.dat
002_template.dat
这一直重复到047_AU
我的程序需要做的是接收一个查询文件和相应的模板文件,即(使用带有001_template.dat文件的001_AU01_query.dat)并运行代码。然后使用具有相同模板文件的下一个001_AU文件。这将一直重复到047.
我可以手动输入一个查询文件和一个模板文件,它可以正常工作。我只是不知道如何使用目录中的所有文件。
int main(int argc, char *argv[])
{
string outFileName = "";
string templateFile = "";
string queryData = "";
ofstream outStream;
Scanner inStreamTemp;
Scanner inStreamQuery;
calc calc;
Utils::CheckArgs(3, argc, argv, "queryData templateFile outFileName");
queryData = "data_project_part1/001_AU01_query.dat";
templateFile = "data_project_part1/001_template.dat";
outFileName = "outFile";
Utils::FileOpen(outStream, outFileName);
if (Utils::FileDoesNotExist(queryData)||Utils::FileDoesNotExist(templateFile))
{
cout << "ERROR: query data file or template file name does not exist" << endl;
exit(0);
}
inStreamQuery.openFile(queryData);
inStreamTemp.openFile(templateFile);
calc.initialize(inStreamQuery, inStreamTemp);
calc.runComputation(outStream);
outStream << "Query File: " << queryData << "\n" << "Template File: " << templateFile << "\n" << "The ten closests neighbors are:\n" << calc.toStringResults() << "\n" << endl;
outStream.flush();
Utils::FileClose(outStream);
return 0;
}
答案 0 :(得分:0)
一种方法是将文件名放在一个列表中并循环遍历该列表。 您可以将这些名称复制并粘贴到文本编辑器中,将其存储在列表中,保存在记事本中,逐行读取并添加到列表中。
然后遍历该列表并使用foreach循环从每个列表中读取