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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 5.00
Pasha88
0 / 0 / 0
Регистрация: 20.08.2012
Сообщений: 4
#1

Работа с деревом файлов/директорий - C++

20.08.2012, 17:32. Просмотров 1273. Ответов 6
Метки нет (Все метки)

Подскажите, пожалуйста, как преобразовать список из файлов и папок (гарантируется, что они описывают дерево с одним корнем - корневой директорией) в объект-дерево?
В первой строке n -общее количество файлов и директорий. В каждой из следующих строк - полный путь к файлу или директории, пробел и идентификатор файла или директории. Идентификаторы упорядочены по возрастанию.

пример списка:
tree[0]= "13";
tree[1]= ". 0";
tree[2]= "./download_client.sh 1";
tree[3]= "./random100_queries_sport.txt 2";
tree[4]= "./times.txt 3";
tree[5]= "./site 4";
tree[6]= "./site/site_kz_domains_random1000_2011-07-26.txt 5";
tree[7]= "./site/site_ru_domains_top1000_2011-07-26.txt 6";
tree[8]= "./site/site_by_domains_top1000_2011-07-27.txt 7";
tree[9]= "./site/kz 8";
tree[10]="./site/kz/random1000 9";
tree[11]="./site/kz/random1000/site_kz_random100_2011-07-16.xml 10";
tree[12]="./site/ru 11";
tree[13]="./site/ru/random100 12";
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
I.M.
564 / 547 / 5
Регистрация: 16.12.2011
Сообщений: 1,389
20.08.2012, 18:00     Работа с деревом файлов/директорий #2
Файлы и папки никакими флагами не отличаются что ли?
Считываешь полный путь к файлу или директории в строку, разделяешь ее на подстроки разделителем '/', затем стучишься в объект-дерево - последовательно подставляешь в него (начиная с корня дерева) все полученные подстроки. Если такая подстрока уже существует в дереве, то переходишь в нее, если не существует, то создаешь и переходишь в нее. Затем проверяешь след. подстроку.
Pasha88
0 / 0 / 0
Регистрация: 20.08.2012
Сообщений: 4
20.08.2012, 18:37  [ТС]     Работа с деревом файлов/директорий #3
Цитата Сообщение от I.M. Посмотреть сообщение
Файлы и папки никакими флагами не отличаются что ли?
Считываешь полный путь к файлу или директории в строку, разделяешь ее на подстроки разделителем '/', затем стучишься в объект-дерево - последовательно подставляешь в него (начиная с корня дерева) все полученные подстроки. Если такая подстрока уже существует в дереве, то переходишь в нее, если не существует, то создаешь и переходишь в нее. Затем проверяешь след. подстроку.
Если есть элемент списка, у которого нет потомков в дереве, то это файл, иначе это директория.

Как вообще это процесс создания объекта в объекте происходит? Очень хотелось бы увидеть хоть подобный пример
I.M.
564 / 547 / 5
Регистрация: 16.12.2011
Сообщений: 1,389
20.08.2012, 18:55     Работа с деревом файлов/директорий #4
C++
1
2
3
4
5
6
7
8
9
class tree
{
public:
//тут публичные функции по работе с объектом дерева
private:
    std::string name_;
    std::vector<tree*> childs_;
    //тут прочие данные, которые нужно хранить внутри объекта
};
fasked
Эксперт С++
4933 / 2513 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
20.08.2012, 19:21     Работа с деревом файлов/директорий #5
Цитата Сообщение от Pasha88 Посмотреть сообщение
Если есть элемент списка, у которого нет потомков в дереве, то это файл, иначе это директория.
А как же пустые директории?
Pasha88
0 / 0 / 0
Регистрация: 20.08.2012
Сообщений: 4
20.08.2012, 19:49  [ТС]     Работа с деревом файлов/директорий #6
Цитата Сообщение от fasked Посмотреть сообщение
А как же пустые директории?
Вот условие, пардон, надо было сразу выложить..
Миниатюры
Работа с деревом файлов/директорий  
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.08.2012, 13:25     Работа с деревом файлов/директорий
Еще ссылки по теме:

Операторы выполняемые над деревом C++
C++ Транслитерация названия директорий
Как написать программу, удаляющую несколько файлов из разных директорий каждые 5 секунд? C++
Отобразить бинарным деревом предложение C++
Сортировка бинарным деревом C++

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

Или воспользуйтесь поиском по форуму:
Masherocka
0 / 0 / 0
Регистрация: 21.08.2012
Сообщений: 5
21.08.2012, 13:25     Работа с деревом файлов/директорий #7
Если эту задачу описать теоретическими словами - то это десериализация структуры данных дерево. То что это файлы и каталоги - не принципиально. Кода в полном решении не на одну страничку. Вот здесь http://www.fulcrumweb.com.ua/archive...fice_test_task разобраны решения похожей по сути задачи. Конечно, формат файла сериализации там другой (ваш список это и есть сериализованное представление дерева), но много идеологически/алгоритмически похожего.
Yandex
Объявления
21.08.2012, 13:25     Работа с деревом файлов/директорий
Ответ Создать тему
Опции темы

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