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

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

Восстановить пароль Регистрация
 
NNN7
7 / 7 / 3
Регистрация: 05.09.2013
Сообщений: 503
21.04.2014, 23:29     Найти имена подкаталогов в папке, после изменения имени любого из них вывести сообщение в виде: старое имя = новое имя #1
Здравствуйте .
Мне нужно найти имена подкаталогов в папке ,а после изменения имени любого подкаталога вывести сообщение в виде:
старое имя = .... , новое имя = .... .

Имена файлов сохраняю в контейнер 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;
}
Но они у меня выводятся все .
Как сделать , чтобы выводилось в виде старое имя = .... , новое имя = .... ?
Подскажите, пожалуйста .
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.04.2014, 23:29     Найти имена подкаталогов в папке, после изменения имени любого из них вывести сообщение в виде: старое имя = новое имя
Посмотрите здесь:

C++ Составить программу, которая вводит с клавиатуры имя и год рождения лица и выводит на экран "Привет Имя, тебе Р лет:).
C++ как вывести имя программы? именно имя, то что видно в провонике example.exe
C++ При вводе имени сообщить, что есть такое имя
C++ Рекурсией найти и вывести самое длинное имя файла
C++ Cоставить программу,которая спрашивала бы сокращенное имя и печатала полное имя
C++ Написать программку, которая бы спрашивала имя, а потом выдавала Привет <имя>!!!
Форматный ввод/вывод: имя, второе имя или инициал, фамилия C++
C++ Вывести на экран в текущем каталоге имена тех каталогов, которые в себе не содержат подкаталогов

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

Текущее время: 02:47. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru