我正在传递一个表示文件夹路径的字符串作为构造函数的参数。
文件夹名称,其中的文件及其名称可以不同,但是两个文件的扩展名始终相同:
*.caffemodel
和*.prototxt
。
如何使用扩展名引用指定目录中的这两个文件,而不必扫描整个文件夹以获取其全名?
作为示例,这是我的课程代码:
#include "NeuralClassifier.hpp"
NeuralClassifier::NeuralClassifier(std::string path)
{
std::string modelName = path + "/*.caffemodel";
std::string protoName = path + "/*.prototxt";
cv::dnn::Net net;
try {
net = dnn::readNetFromCaffe(protoName, modelName);
}
catch (cv::Exception& e) {
std::cerr << "Exception: " << e.what() << std::endl;
if (net.empty())
{
std::cerr << "Can't load network by using the following files: " << std::endl;
std::cerr << "prototxt: " << protoName << std::endl;
std::cerr << "caffemodel: " << modelName << std::endl;
std::cerr << "bvlc_googlenet.caffemodel can be downloaded here:" << std::endl;
std::cerr << "http://dl.caffe.berkeleyvision.org/bvlc_googlenet.caffemodel" << std::endl;
exit(-1);
}
}
}
答案 0 :(得分:1)
在某些时候,操作系统需要知道您的应用程序要打开的确切文件名。在您的情况下,您可以指定一个通配符“ *”,该通配符不能匹配多个文件。
如果您只想打开与通配符匹配的第一个文件,则可以使用boost :: filesystem来简化文件处理:
Can I use a mask to iterate files in a directory with Boost?