Форум программистов, компьютерный форум CyberForum.ru

Ручная сортировка файлов по разрешениям - C++

Восстановить пароль Регистрация
 
Tilk
 Аватар для Tilk
0 / 0 / 0
Регистрация: 13.03.2010
Сообщений: 79
18.01.2011, 16:51     Ручная сортировка файлов по разрешениям #1
Всем добрый день.

Есть список файлов в текущей папке проекта, пытаюсь забить в vector<string> modelfiles только те, что с расширением .cpp

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
void L_CDialog::InitFileList()
{
    WIN32_FIND_DATA winFileData;
    HANDLE hFile;
    char szPath[MAX_PATH];
    modelfiles.clear();
    folders.clear();
    if(GetCurrentDirectory(sizeof(szPath),szPath))
    {
        lstrcat(szPath,"\\*.*");
        hFile = FindFirstFile(szPath,&winFileData);
        if (hFile!=INVALID_HANDLE_VALUE)
        {
            //Error
        }
        while (FindNextFile(hFile,&winFileData)!=0)
        {
            string temp(winFileData.cFileName);
 
            int a,b;
            a = temp.find(".cpp");
            b = temp.size() - 4;
            if(a == b)
                modelfiles.push_back(temp);   
        } 
        FindClose(hFile);
    }
}
В итоге после цикла вектор остается пустым несмотря на вот такой парадокс - метод push_back просто обязан был быть вызван, т.к. в отладке есть случаи, когда a == b (скриншот прилеплен).

Если же закомментить условие - в векторе появляются все без исключения файлы - т.е. метод push_back вызывается и корректно работает.
Миниатюры
Ручная сортировка файлов по разрешениям  
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.01.2011, 16:51     Ручная сортировка файлов по разрешениям
Посмотрите здесь:

C++ сортировка файлов
Быстрая сортировка содержимого больших файлов C++
Перестановки, поиск, сортировка, слияние файлов C++
C++ Сортировка файлов
C++ Сортировка каталогов и файлов
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9373 / 5423 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
18.01.2011, 17:07     Ручная сортировка файлов по разрешениям #2
Цитата Сообщение от Tilk Посмотреть сообщение
lstrcat(szPath,"\\*.*");
А что бы сразу нужные файлы не искать?
C++
1
lstrcat(szPath,"\\*.cpp");
тогда и проверять больше ничего не прийдётся...
Tilk
 Аватар для Tilk
0 / 0 / 0
Регистрация: 13.03.2010
Сообщений: 79
18.01.2011, 17:23  [ТС]     Ручная сортировка файлов по разрешениям #3
Работает... А таким способом можно распознать папку?
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9373 / 5423 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
18.01.2011, 17:36     Ручная сортировка файлов по разрешениям #4
Цитата Сообщение от Tilk Посмотреть сообщение
А таким способом можно распознать папку?
не-а... если только у папки расширения срр не будет... ищите все файлы, из них выбирайте папки и в папках ищите срр файлы...
Tilk
 Аватар для Tilk
0 / 0 / 0
Регистрация: 13.03.2010
Сообщений: 79
18.01.2011, 17:49  [ТС]     Ручная сортировка файлов по разрешениям #5
А так можно?

C++
1
2
3
4
5
6
bool isFolder = true;
for(int i=0;i<temp.lenght;i++)
{
  if(temp.c_str()[i] == '.')
    isFolder = false;
}
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9373 / 5423 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
18.01.2011, 18:06     Ручная сортировка файлов по разрешениям #6
Цитата Сообщение от Tilk Посмотреть сообщение
А так можно?
не, так лучше не делать - во-первых в имени папки вполне может быть точка, а во-вторых в структуре WIN32_FIND_DATA, указатель на объект которой принимает FindFirstFile()/FindNextFile(), есть специальное поле dwFileAttributes. Его и нужно проверять:
C
1
2
3
4
if ( winFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) {
  /* папка. ищем в ней вложенные папки, за тем файлы с расширением срр */
  ...
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.01.2011, 20:09     Ручная сортировка файлов по разрешениям
Еще ссылки по теме:

C++ Обработка и сортировка графических файлов
C++ Сортировка Файлов формата Mp3
C++ Как выделяется память на стеке и на куче? Когда нужна ручная очистка?

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Tilk
 Аватар для Tilk
0 / 0 / 0
Регистрация: 13.03.2010
Сообщений: 79
18.01.2011, 20:09  [ТС]     Ручная сортировка файлов по разрешениям #7
Огромное спасибо, Вы очень помогли!
Yandex
Объявления
18.01.2011, 20:09     Ручная сортировка файлов по разрешениям
Ответ Создать тему
Опции темы

Текущее время: 08:27. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru