std :: fileystem :: diefory_iterator и std :: fileSystem :: recursive_directory_iterator из этой библиотеки помочь мне пройти путь ввода файла мелкому или рекурсивным образом соответственно. /code>, который должен состоять из исходного дефиса -, за которым следует буквы, которые поддерживают флаги опций.
flag r означает рекурсивность Переход всех подкаталогов, в противном случае посмотрите только в заданный путь. < /p>
Код: Выделить всё
argv[2]Мой вопрос, однако, о том, как запустить это в шаблоне или, если это даже возможно. < br/> В качестве теста я использую std :: variant в функции option_r () , который выбирает правильный Directory_iterator в зависимости от того, в зависимости от того, является ли -р Флаг присутствует на вводе или нет. переопределить ">
Код: Выделить всё
#include
#include
#include
#include
#include
#include
#include
using namespace std;
using namespace std::filesystem;
template concept isIter =
is_same::value || is_same::value;
template
dirIterator option_R(std::string_view options, const path &my_path) {
variant my_iter;
if (options.find('R') != string::npos) {
my_iter.emplace(my_path, directory_options::skip_permission_denied);
return get(my_iter);
} else {
my_iter.emplace(my_path);
return get(my_iter);
}
}
template
void traverse(isIter &my_iter, vector &my_vec) {
cout
Подробнее здесь: [url]https://stackoverflow.com/questions/79449553/use-of-stdvariant-to-select-types-after-command-prompt-input-is-that-even-p[/url]
Мобильная версия