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

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

Войти
Регистрация
Восстановить пароль
 
NNN7
8 / 8 / 3
Регистрация: 05.09.2013
Сообщений: 502
#1

Найти имена подкаталогов в папке, после изменения имени любого из них вывести сообщение в виде: старое имя = новое имя - C++

21.04.2014, 23:29. Просмотров 223. Ответов 0
Метки нет (Все метки)

Здравствуйте .
Мне нужно найти имена подкаталогов в папке ,а после изменения имени любого подкаталога вывести сообщение в виде:
старое имя = .... , новое имя = .... .

Имена файлов сохраняю в контейнер set.

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
#include "stdafx.h"
#include <iostream>
#include <Windows.h>
#include <stdio.h>
#include <list>
#include <set>
#include <string>
#include <iterator> 
using namespace std;
 
 
 
HANDLE hndl,hFind,hFind2;
WIN32_FIND_DATA fd,FindFileData,FindFileData2;
BOOL bRet = TRUE;
BOOL bRet2 = TRUE;
 
 
set <string> dir;
set <string> dir2;
 
 
int _tmain(int argc, _TCHAR* argv[])
{  char name [10] = _T("C:\\test");
    
//инициализация дескриптора оповещаний
    hndl = FindFirstChangeNotification (_T(name), TRUE ,FILE_NOTIFY_CHANGE_DIR_NAME);
    //если дескриптор не получен
    if(hndl==INVALID_HANDLE_VALUE)
    {cout<<"Invalid Handle"<<endl;
     int error=GetLastError();
     cout<<endl<<"error="<<error;
  }
    /*поиск подкаталогов*/
   hFind=FindFirstFile(_T("C:\\test\\*.*"),&FindFileData);
 
   while(hFind!=INVALID_HANDLE_VALUE  && bRet)
    
    {
        if((FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) != 0)
        {  
            dir.insert(FindFileData.cFileName);
            
        }
        
 
        bRet=FindNextFile(hFind,&FindFileData);
    }
//вывод подкаталогов 
 copy(dir.begin(), dir.end(), ostream_iterator<std::string>(std::cout, "\n"));
FindClose (hFind);
 
//ожидание оповещаний
    //если имя каталога изменено
  if(WaitForSingleObject (hndl,INFINITE) != WAIT_FAILED)
   {cout<<" Dir name changed!"<<endl;
  
   }
FindCloseChangeNotification (hndl);
 
 
//снова проверяем подкаталоги 
 
/*поиск подкаталогов*/
   hFind2=FindFirstFile(_T("C:\\test\\*.*"),&FindFileData2);
 
   while(hFind!=INVALID_HANDLE_VALUE  && bRet2)
    
    {
        if((FindFileData2.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) != 0)
        {  
            dir2.insert(FindFileData2.cFileName);
            
        }
        
 
        bRet2=FindNextFile(hFind2,&FindFileData2);
    }
//вывод подкаталогов 
 copy(dir2.begin(), dir2.end(), ostream_iterator<std::string>(std::cout, "\n"));
FindClose (hFind2);
 
 
 
    return 0;
}
Но они у меня выводятся все .
Как сделать , чтобы выводилось в виде старое имя = .... , новое имя = .... ?
Подскажите, пожалуйста .
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.04.2014, 23:29
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Найти имена подкаталогов в папке, после изменения имени любого из них вывести сообщение в виде: старое имя = новое имя (C++):

как вывести имя программы? именно имя, то что видно в провонике example.exe - C++
собственно вопрос ^. это возможно? Добавлено через 18 минут догадался, кому надо ^^ #include &lt;iostream.h&gt; using std::cout; ...

Как после смены имени файла получить его новое имя в переменную типа string - C#
string added = Console.ReadLine();//переменная для имени файлов формата added+number+extention string path =...

Переименовать папку в имя, являющееся частью имени одного из файлов, находящихся в этой папке - CMD/BAT
Прошу помощи... Имеется около тысячи папок с разными именами. В каждой папке по несколько pdf файлов с именами: Фамилия может...

VBS Выделять из имени каждого файла имя компьютера и имя учётной записи и записывать их в два файла соответственно - VBScript/JScript
здравствуйте, подскажите... Есть например, 10 файлов (.txt) в названии которых написано имя компьютера и имя учетной записи Так же в...

Новый сайт на старое доменное имя - Хостинг
Здравствуйте. У меня на хостинге есть доменное имя, в папке которого куча файлов (кто-то когда-то привязал к этому домену сайт, который уже...

Как в билдере получить с сервера (MySQL 5.1, имя базы "skola", имя table "info") имя столбцов и имя строк - C++ Builder БД
Доброва времены суток Как в билдере получить с сервера (MySQL 5.1, имя базы &quot;skola&quot;, имя table &quot;info&quot;) имя столбцов и имя строк, мне...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.04.2014, 23:29
Привет! Вот еще темы с ответами:

Ввести фамилию, имя, отчество. Вывести свое имя в столбик - Free Pascal
Ввести фамилию, имя, отчество. Вывести свое имя в столбик.

Строки: ввести фамилию, имя и отчество, вывести имя в столбик - Pascal
Ввести фамилию, имя и отчество как одно данное строкового типа. Вывести имя в столбик.

Зная ip адрес компьютера и его имя вывести имя пользователя - Visual Basic .NET
Зная ip адрес компьютера и его имя вывести имя пользователя в текстовое поле. я смог осилить только вывод имя компьютера: ...

Вывести фамилию, имя, отчество без пробелов. Сколько букв имеет имя. - C#
как росписать в си-шарпе?


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

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

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