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

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

Войти
Регистрация
Восстановить пароль
 
Misha_cpp
Заблокирован
#1

Получить название файлов с 1-ой папки , со 2-ой папки и вывести. Неправильный вывод - C++

18.04.2014, 18:09. Просмотров 427. Ответов 1
Метки нет (Все метки)

Есть такая задача: получить название файлов с 1-ой папки , со 2-ой папки и вывести название тех файлов , которые отличают эти папки между собою.

Делаю через контейнер set.

Пытаюсь вставить имена файлов и вывести их:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
set <WCHAR*> f1;  //объявили
int main(){
 
    WIN32_FIND_DATA FindFileData, FindFileData2;
    HANDLE hf1=FindFirstFile(L"C:\\dir\\*", &FindFileData);
    INT i=0;
    cout<<"dir1:"<<endl;
    if (hf1==INVALID_HANDLE_VALUE){puts("Path not found"); return 1;}
        do{
            f1.insert(&FindFileData.cFileName[0]);
            copy(f1.begin(), f1.end(), ostream_iterator<WCHAR*>(cout, " "));
            
           }
        while (FindNextFile(hf1,&FindFileData));
        FindClose(hf1);
ошибок не выдаёт , но вместо названий файлов выводятся непонятные коды , при чём одинаковые ( количесвто совпадает с количеством файлов).

как это исправить ? я уже замучился с этой задачей, не пойму , как её переделать
Заранее спасибо за помощь.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.04.2014, 18:09
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Получить название файлов с 1-ой папки , со 2-ой папки и вывести. Неправильный вывод (C++):

Как можно в С++ получить список файлов и папок какого-то диска или папки? - C++
Как можно в С++ получить список файлов и папок какого-то диска или папки?

Название папки проекта - C++
Столкнулся с такой проблеммой, создал проект в MVS2008, в него входили три файла. Первый - заголовочный к классу, второй - сам класс, и...

Папки header файлов. VS 2010 - C++
Подскажите как в Visual Studio 2010 указать, где находятся header файлы. В папке, где находятся соответствующие cpp файлы (в папке...

Открытие файлов из заданной папки - C++
Есть папка, к которой задан путь. Как читать из нее файлы в каком-нибудь порядке? Спасибо всем, кто ответит!

Указание рабочей папки для файлов на C++ - C++
Добрый вечер! Я очень начинающий программист и знаю только немного, поэтому заранее извиняюсь, если вопрос глупый :) . Передо...

Получение всех текстовых файлов из папки - C++
Всем привет. Можно ли на с++ написать программу, в которой ты вводишь полный путь до какой-то папки, далее вводишь расширение файлов...

1
Меорн
74 / 59 / 29
Регистрация: 01.02.2014
Сообщений: 203
18.04.2014, 20:02 #2
C++
1
f1.insert(&FindFileData.cFileName[0]);
Ты сохраняешь указатель на строку &FindFileData.cFileName[0], это временный указатель. Он начинает указывать не известно на что после следующего вызова FindNextFile(hf1,&FindFileData);
Нужно выделять память копировать в нее и сохранять указатель на выделенную память.
C++
1
copy(f1.begin(), f1.end(), ostream_iterator<WCHAR*>(cout, " "));
Каждую итерацию выводишь содержимое сета. Зачем? По моему необходимо вынести за цикл.
Ну и соответственно числа которые выводит программа это адреса, а не строки которые хранятся по этим адресам.
<WCHAR*> - адрес а не строка.

Добавлено через 16 минут
Я бы исправил так:
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
#include <iostream>
#include <string>
#include <windows.h>
 
int main()
{
        WIN32_FIND_DATA FindFileData, FindFileData2;
        HANDLE hf1 = FindFirstFile(L"C:\\dir\\*", &FindFileData);
        
        if (hf1 == INVALID_HANDLE_VALUE) {
            std::cout <<  "Path not found" << std::endl;
            system("pause");
            return 1; 
        }
 
        int i = 1;
        do {
            WCHAR* buffer = new WCHAR[260];
            wcscpy(buffer,&FindFileData.cFileName[0]);
            std::wcout << "dir" << i << " - " << std::wstring(buffer) << std::endl;
            delete[] buffer;
            i++;
        } while (FindNextFile(hf1,&FindFileData));
 
        FindClose(hf1);
        system("pause");
}
Не фанат я всяких WCHAR* и иже с ними. Стринг он завсегда приятнее...
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.04.2014, 20:02
Привет! Вот еще темы с ответами:

Получить список пользователей расшареной папки - C++
Здравствуйте форумчане. Создал программу получающую список расшаренных папок(&quot;Общий доступ...&quot;) на компьютере. Код нашел с этого сайта...

Программа для печати всех файлов из указанной папки - C++
Добрый день! Весь интеренет облазил не могу найти прогу которая будет печатать файл попадающий в указанную папку и после печати удалять...

Как получить все папки и файлы хранящиеся на диске? - C++
Здравствуйте! Помогите пожалуйста в написании кода, с помошью которого можно получить все папки и файлы хранящиеся на диске D: ...

В файл с помощью структуры записать следующие данные: "название папки, ее размер, дата создания" - C++
Добрый день! Есть файл в нем с помощью структуры надо записать такие данные: &quot;название папки,ее размер, и дата создания&quot;. После заполнения...


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

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

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