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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Tilk
 Аватар для Tilk
0 / 0 / 0
Регистрация: 13.03.2010
Сообщений: 79
#1

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

18.01.2011, 16:51. Просмотров 761. Ответов 6
Метки нет (Все метки)

Всем добрый день.

Есть список файлов в текущей папке проекта, пытаюсь забить в 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 вызывается и корректно работает.
Миниатюры
Ручная сортировка файлов по разрешениям  
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
easybudda
Эксперт С++
 Аватар для easybudda
9412 / 5435 / 917
Регистрация: 25.07.2009
Сообщений: 10,428
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
9412 / 5435 / 917
Регистрация: 25.07.2009
Сообщений: 10,428
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
9412 / 5435 / 917
Регистрация: 25.07.2009
Сообщений: 10,428
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++ Сортировка Файлов формата Mp3
C++ Как выделяется память на стеке и на куче? Когда нужна ручная очистка?
Копирование, сортировка файлов C++
Запись и чтение структуры из файлов, сортировка по полю C++
Сортировка файлов по дате изменения C++

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

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

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