Как получить полный путь от одного с подстановочными знаками?

У меня есть путь вроде:

C:\путь\к\моему*файлу\

и я хотел бы получить соответствующий полный путь (если он существует):

C:\путь\к\my1file\

Я пробовал с этим кодом Qt, но результат тот же, что и в начале:

QStringList filters;
filters << "C:/path/to/my*file/";

QDir dir;
dir.setNameFilters(filters);

QStringList dirs = dir.entryList(filters);

_path = dirs.at(0);     // get the first path only

Разве я не должен получать все файлы/каталоги, которые проходят через фильтр?
Почему _path равен "C:/path/to/my*file/"?

Можно ли сделать то же самое только с C++98/STL? (В этом проекте я не могу использовать Boost/C++11).


person Pietro    schedule 03.07.2013    source источник
comment
Я не верю, что _path это "C:/path/to/my*file/". QDir::entryList() возвращает только существующие файлы/каталоги/симлинки, так что либо все работает нормально, либо dirs пустой список   -  person SpongeBobFan    schedule 03.07.2013


Ответы (2)


Используйте filters для фильтрации файлов/папок и задайте путь в объекте QDir:

QStringList filters;
filters << "my*file";

QDir dir("C:/path/to/");
QStringList dirs = dir.entryList(filters);

if (dirs.size() > 0)
{
    qDebug() << dirs.at(0);
}
person asclepix    schedule 03.07.2013

Расширение имен файлов называется подстановкой. В Windows функции FindFirstFile() / FindNextFile() выполняют подстановку.

person brian beuning    schedule 03.07.2013