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

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

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

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

18.01.2011, 16:51. Просмотров 795. Ответов 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 вызывается и корректно работает.
0
Миниатюры
Ручная сортировка файлов по разрешениям  
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.01.2011, 16:51
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Ручная сортировка файлов по разрешениям (C++):

Сортировка файлов - C++
Здравствуйте уважаемые форумчане)) С праздником Вас... Вот кто нибудь подскажет как сортируются файлы? методы Трех ленточную мне двли и...

сортировка файлов - C++
реализовать сортировку файла input.txt методом двухпутевого слияния. помогите пожалуйста)

Как выделяется память на стеке и на куче? Когда нужна ручная очистка? - C++
Всем здрасьте. //1 char s = 's'; //2 char* ss = new char; Во втором случае компилятор выделяет участок памяти, потом мне же её...

Копирование, сортировка файлов - C++
Добрый день! У меня в папке много различных файлов необходимо, переместить или скопировать их по различным созданным папкам(сортировка не...

Сортировка каталогов и файлов - C++
Нужно создать программу выполняющую сортировку каталогов и файлов различными методами (напр.: по типу, дате создания, имени, расширению и...

Сортировка Файлов формата Mp3 - C++
Друзья, сегодня наводил порядок на компьютере и обнаружил что у меня более 5к песен в формате Mp3, все названия типа 1.xyxyxy 2.xyxyx ...

6
easybudda
Модератор
Эксперт CЭксперт С++
9681 / 5631 / 954
Регистрация: 25.07.2009
Сообщений: 10,808
18.01.2011, 17:07 #2
Цитата Сообщение от Tilk Посмотреть сообщение
lstrcat(szPath,"\\*.*");
А что бы сразу нужные файлы не искать?
C++
1
lstrcat(szPath,"\\*.cpp");
тогда и проверять больше ничего не прийдётся...
0
Tilk
0 / 0 / 0
Регистрация: 13.03.2010
Сообщений: 79
18.01.2011, 17:23  [ТС] #3
Работает... А таким способом можно распознать папку?
0
easybudda
Модератор
Эксперт CЭксперт С++
9681 / 5631 / 954
Регистрация: 25.07.2009
Сообщений: 10,808
18.01.2011, 17:36 #4
Цитата Сообщение от Tilk Посмотреть сообщение
А таким способом можно распознать папку?
не-а... если только у папки расширения срр не будет... ищите все файлы, из них выбирайте папки и в папках ищите срр файлы...
0
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;
}
0
easybudda
Модератор
Эксперт CЭксперт С++
9681 / 5631 / 954
Регистрация: 25.07.2009
Сообщений: 10,808
18.01.2011, 18:06 #6
Цитата Сообщение от Tilk Посмотреть сообщение
А так можно?
не, так лучше не делать - во-первых в имени папки вполне может быть точка, а во-вторых в структуре WIN32_FIND_DATA, указатель на объект которой принимает FindFirstFile()/FindNextFile(), есть специальное поле dwFileAttributes. Его и нужно проверять:
C
1
2
3
4
if ( winFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) {
  /* папка. ищем в ней вложенные папки, за тем файлы с расширением срр */
  ...
}
0
Tilk
0 / 0 / 0
Регистрация: 13.03.2010
Сообщений: 79
18.01.2011, 20:09  [ТС] #7
Огромное спасибо, Вы очень помогли!
0
18.01.2011, 20:09
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.01.2011, 20:09
Привет! Вот еще темы с ответами:

Сортировка файлов по дате изменения - C++
Выводятся файлы на Listbox1 С++ listBox1-&gt;Items-&gt;Clear(); DirectoryInfo^ di = gcnew DirectoryInfo(&quot;C://&quot;); ...

Обработка и сортировка графических файлов - C++
Создать программу для обработки и сортировки графических файлов_) Может есть какие мысли??

Сортировка файлов по папкам в зависимости от расширения - C++
Всем привет! Я вот тут на досуге задумал написать такую программу которая бы сортировала файлы по расширению. Например: Открываю свою...

Быстрая сортировка содержимого больших файлов - C++
Здравствуйте. Поставлена такая задача - отсортировать содержимое файла. Человек сразу сказал, что файлы могут быть больших размеров....


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

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