Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
3 / 2 / 2
Регистрация: 14.04.2016
Сообщений: 94
1

Получить список файлов в заданной директории

06.09.2016, 16:54. Показов 1050. Ответов 6
Метки нет (Все метки)

Доброго времени суток!
Раздобыл код с получением списком файлов:
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
29
30
31
#include <iostream>
#include <Windows.h>
using namespace std;
*
int main()
{
* * setlocale(LC_ALL, "Russian");
* * WIN32_FIND_DATAW findData;
* * HANDLE hf;
* * wstring s = L"D:\\*.exe";
* * hf = FindFirstFileW(s.c_str(), &findData);
*
* * if (hf == INVALID_HANDLE_VALUE)
* * {
* * * * wcout << "Cannot find file" << endl;
* * * * return -1;
* * }
* * int k = 0;
* * do
* * {
* * * * if (findData.dwFileAttributes & FILE_ATTRIBUTE_ARCHIVE)
* * * * {
* * * * * * k++;
* * * * * * wcout << findData.cFileName << endl;
* * * * }
* * } while (FindNextFileW(hf, &findData));
* * wcout << k << endl;
*
* * FindClose(hf);
* * system("pause");
}
Вопрос заключается в том, как сделать так, чтобы пользователь мог задавать каталог?
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.09.2016, 16:54
Ответы с готовыми решениями:

Получить список файлов в директории
Всем доброго времени суток. Я хочу получить список файлов в директории любым способом, но не...

Получить список файлов и папок в директории
Вот такой вопрос возник, допустим я хочу написать что то типа файлового менеджера, как мне получить...

Список файлов в директории
Нашёл функцию которая должна вроде бы выводить список файлов в директории. Правильная она или нет...

Достать список файлов из директории
Нужно дать пользователю ввести путь к директории. Если такой нет, вывести, что не найдена. Если...

6
Эксперт С++
1605 / 936 / 778
Регистрация: 06.02.2016
Сообщений: 2,425
Записей в блоге: 30
06.09.2016, 17:24 2
hunterlan,
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
29
#include <iostream>
#include <Windows.h>
#include <string>
using namespace std;
int main() {
    setlocale(LC_ALL, "Russian");
    WIN32_FIND_DATAW findData;
    HANDLE hf;
    string s1;
    getline(cin,s1);
    wstring s(s1.begin(),s1.end());
    hf = FindFirstFileW(s.c_str(), &findData);
 
    if (hf == INVALID_HANDLE_VALUE) {
        wcout << "Cannot find file" << endl;
        return -1;
    }
    int k = 0;
    do {
        if (findData.dwFileAttributes & FILE_ATTRIBUTE_ARCHIVE) {
            k++;
            wcout << findData.cFileName << endl;
        }
    } while (FindNextFileW(hf, &findData));
    wcout << k << endl;
 
    FindClose(hf);
    system("pause");
}
Вводим D:\\*.exe например
Или
C++
1
2
3
    wstring s1;
    wcin>>s1;
    hf = FindFirstFileW(s1.c_str(), &findData);
0
3 / 2 / 2
Регистрация: 14.04.2016
Сообщений: 94
06.09.2016, 21:11  [ТС] 3
Цитата Сообщение от Peoples Посмотреть сообщение
Вводим D:\\*.exe например
Прописываю "E:\\для youtube\\*.mp4" - не нашло, но я ведь знаю, что они там есть...
Или данный код заточен чисто под .exe?
0
Эксперт С++
1605 / 936 / 778
Регистрация: 06.02.2016
Сообщений: 2,425
Записей в блоге: 30
06.09.2016, 21:15 4
hunterlan, В вашем случае надо писать E:\для youtube\\*.mp4
0
3 / 2 / 2
Регистрация: 14.04.2016
Сообщений: 94
06.09.2016, 21:32  [ТС] 5
Цитата Сообщение от Peoples Посмотреть сообщение
E:\для youtube\\*.mp4
Не сработало...
Да, хочу отметить что часть кода находится в самом начала, а основная в свитче, да вот собственно код:
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
#include <iostream>
#include <Windows.h>
#include <conio.h>
#include <string>
using namespace std;
void main()
{
    BYTE pState;
    HWND hWnd = GetForegroundWindow();
    ////////////////////////////////
    WIN32_FIND_DATAW findData;
    HANDLE hf;
    string s1;
    wstring s(s1.begin(), s1.end());
    int k = 0;
    /////////////////////////////////////
    setlocale(LC_ALL, "RUSSIAN");
    cout << "Program is starting...." << '\n';
    Sleep(1000);
    cout << "Loading...." << '\n';
    Sleep(1000);
    cout << "DONE!" << '\n';
    Sleep(1000);
    int a;
comeback:
    cout << "Choose language:\n";
    cout << "1.English\n";
    cout << "2.Українська\n";
    cout << "3.Русский\n";
    cin >> a;
    switch (a)
    {
    comeback1:
    case 1:
        int A;
        cout << "TOP-Secret:\n";
        cout << "1. TOP-secret, 2.Secret\n";
        cin >> A;
        switch (A)
        {
        case 1:
            /*Тут был код, но он теперь закрыт*/
        case 2:
            wcout << "Put down you link to disk\n";
            wcin >> s;
            hf = FindFirstFileW(s.c_str(), &findData);
            if (hf == INVALID_HANDLE_VALUE) {
                wcout << "Cannot find file" << endl;
            }
            do {
                if (findData.dwFileAttributes & FILE_ATTRIBUTE_ARCHIVE) {
                    k++;
                    wcout << findData.cFileName << endl;
                }
            } while (FindNextFileW(hf, &findData));
            wcout << k << endl;
 
            FindClose(hf);
            break;
        default:
            int b;
            cout << "Wrong number! Would you like try again?(1 - yes, 2 - no)\n";
            cin >> b;
            switch (b)
            {
            case 1:
                goto comeback1;
            case 2:
                exit(0);
            default:
                cout << "ERROR! Exit from programm!\n";
                exit(0);
                break;
            }
        }
        break;
    case 2:
        cout << "Оберити програму:\n";
        break;
    case 3:
        cout << "Выберите программу:\n";
        break;
    default:
        cout << "Wrong choose! Please, press any button for continum\n";
        system("pause");
        goto comeback;
        break;
    }
}
З.Ы wcin работает только s, то есть:
C++
1
wcin >> s;
или
C++
1
cin >> s1;
0
Эксперт С++
1605 / 936 / 778
Регистрация: 06.02.2016
Сообщений: 2,425
Записей в блоге: 30
06.09.2016, 21:41 6
hunterlan, сначала вводим cin>>s; обычную строку, потом преобразуем ей в wstring wstring s(s1.begin(), s1.end());
Или можно без этого сразу
C++
1
2
wstring s;
wcin>>s;
0
3 / 2 / 2
Регистрация: 14.04.2016
Сообщений: 94
06.09.2016, 21:54  [ТС] 7
Цитата Сообщение от Peoples Посмотреть сообщение
wstrign s;
wcin>>s;
Если их поместить в кейс, то пишит, что идентификатор "wstring" не определен.

Добавлено через 9 минут
Цитата Сообщение от Peoples Посмотреть сообщение
сначала вводим cin>>s; обычную строку, потом преобразуем ей в wstring wstring s(s1.begin(), s1.end());
Или можно без этого сразу
Не сработалъ, пишет ошибку, которую описал выше
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.09.2016, 21:54

Аналог ls (вывод списка папок и файлов в заданной директории)
как сделать, чтобы программа выводила список папок и файлов в заданной директории?

Вывести на экран список файлов и каталогов в текущей директории
Помогите написать программу, работающую в текстовом режиме (ширина экрана равна 80 столбцов),...

Как получить названия файлов в конкретной директории
Нужно указать директорию, и получить список названий всех файлов, которые находятся в папке.

Получить названия всех файлов с данным расширением в данной директории
Мне нужно, чтобы моя программа при запуске получала имена всех файлов с расширением .mmf, лежащих в...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru