Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Misha_cpp
Заблокирован
#1

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

18.04.2014, 18:09. Просмотров 447. Ответов 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++):

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

Название папки проекта
Столкнулся с такой проблеммой, создал проект в MVS2008, в него входили три...

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

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

Копирование файлов из одной папки в другую
Нужно скопировать все файлы из папки С:/zello в папку С:/zello2 Программу с...

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

1
Меорн
76 / 61 / 45
Регистрация: 01.02.2014
Сообщений: 208
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++
Добрый вечер! Я очень начинающий программист и знаю только немного, поэтому...

Получить список пользователей расшареной папки
Здравствуйте форумчане. Создал программу получающую список расшаренных...

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

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


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

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

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