Я хочу получить все подходящие пути, следующие этому шаблону в vector<string>:
vector<string>
"/some/path/img*.png"
Как я могу просто сделать это?
У меня есть это в моей сути.Я создал оболочку stl вокруг glob, чтобы он возвращал вектор строки и заботился о том, чтобы освободить результат globНе совсем очень эффективный, но этот код немного более читабелен, и некоторые скажут, что его легче использовать.
Вы можете использовать библиотечную функцию POSIX glob().
glob()
Я написал простую библиотеку glob для Windows и Linux (вероятно, работает и на других * nixes) некоторое время назад, когда мне было скучно, не стесняйтесь использовать ее как хотите.
Пример использования:
#include <iostream> #include "glob.h" int main(int argc, char **argv) { glob::Glob glob(argv[1]); while (glob) { std::cout << glob.GetFileName() << std::endl; glob.Next(); } }
Я пробовал решения выше на Centos6, и я обнаружил, что мне нужно изменить:
int ret = glob(pat.c_str(), 0, globerr, &glob_result);
(где "globerr" - функция обработки ошибок)
Безпри явном 0 я получил ошибку "GLOB_NOSPACE".
Наиболее вероятно http://www.boost.org/doc/libs/release/libs/regex/ - ближайший, который вы получите. Есть большая вероятность, что это будет поддерживаться в C ++ 11.