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

Программа, которая "разносит" файлы - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Лабораторная работа №7 (на С) http://www.cyberforum.ru/cpp-beginners/thread348643.html
Помогите решить лабу (на С) вариант №3.
C++ Кодировка файла Можно ли как-то создать файл с заданной кодировкой через fopen или может есть другой вариант, подскажите пожалуйста. http://www.cyberforum.ru/cpp-beginners/thread348636.html
C++ Курсовая работа(на С).
помогите сделать БД на тему:"Человек".(на С) Разработать систему управления базой данных на языке С. Тематики базы данных выбираются согласно варианту. Хранение данных организовать в виде структуры. Программа должна обеспечивать: • ввод данных; • выборку по заданному условию; • вывод данных на экран. Дальнейшие функции СУБД могут быть выбраны самостоятельно. Отдельные функции СУБД...
C++ Удалённое выключение ПК (перевод с Pascal на C++)
...shutdown a computer through a network connection? Autor: Manfred Ruzicka Tip Rating (9): {----------------------------------------------------------------------------- Unit Name: shutdown Author: Manfred Ruzicka Description: Mit diese Unit ist es möglich Betriebssysteme die auf Windows NT
C++ Ошибка выражение должно иметь константное значение http://www.cyberforum.ru/cpp-beginners/thread348620.html
Всем привет. Тут такая песня началась забавная. Вообще для начала я хочу выделить очень важную для меня строку - никакого решения в виде готового алгоритма показывать не нужно(я хочу это загадку потом решить, потому что пока она не решена она мне интересна) Вообщем я С++ учу без всяких там спец курсов и думаю далековато уже продвинулся в плане основ и тут приятель решил на курсы...
C++ Какая разница между cin и scanf? Здраствуйте. А какая разница между cin и scanf? подробнее

Показать сообщение отдельно
talis
 Аватар для talis
789 / 541 / 37
Регистрация: 11.05.2010
Сообщений: 1,298
Записей в блоге: 1
06.09.2011, 21:51     Программа, которая "разносит" файлы
bodrich, какая ОС? винда?

Добавлено через 1 час 28 минут
bodrich, если следовать идее Jupiter, но без буста, то для винды как-то так:

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
87
88
89
90
91
92
93
#include <iostream>
#include <stdexcept>
#include <vector>
#include <map>
 
#include <windows.h>
#include <shlobj.h>
 
using namespace std;
 
extern "C" INT WINAPI SHCreateDirectoryExA(HWND,LPCSTR,LPSECURITY_ATTRIBUTES);
 
// создать директорию
bool mkdir( string path )
{
    for( string::iterator it = path.begin(); it != path.end(); it++ )
        if( *it == '/' )
            *it = '\\';
 
    int err = SHCreateDirectoryExA( 0, path.c_str(), 0 );
 
    if( err != 0 && err != ERROR_ALREADY_EXISTS  )
        return false;
 
    return true;
}
 
// список файлов в директории
void ls( vector<string> &vec, string &d )
{
    vec.clear();
 
    string search = d + "\\*";
 
    WIN32_FIND_DATA dat;
    HANDLE hand = FindFirstFile( search.c_str(), &dat );
 
    if( hand == INVALID_HANDLE_VALUE )
        return;
 
    do
    {
        if( !(dat.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) )
            vec.push_back( dat.cFileName );
    }
    while( FindNextFile( hand, &dat ) );
 
    FindClose( hand );
}
 
int main()
{
    string from, to;
 
    cout << "Please enter source path:\n>";
    getline( cin, from );
 
    cout << "Please enter destination path (e.g. where to create 11, 22, etc. folders):\n>";
    getline( cin, to );
 
    vector<string> dirls;
    ls( dirls, from );
 
    map<string, string> dirmap;
    dirmap[".aa"] = to + "\\11";
    dirmap[".bb"] = to + "\\22";
    dirmap[".cc"] = to + "\\33";
    dirmap[".dd"] = to + "\\44";
    dirmap[".ee"] = to + "\\55";
    dirmap[".ff"] = to + "\\66";
 
    for( vector<string>::iterator it_vec = dirls.begin(); it_vec != dirls.end(); it_vec++ )
    {
        for( map<string, string>::iterator it_map = dirmap.begin(); it_map != dirmap.end(); it_map++  )
        {
            if( !(*it_vec).compare( (*it_vec).find_last_of( '.' ), (*it_vec).length(), (*it_map).first ) )
            {
                cout << "Copying " << *it_vec << ": ";
 
                if( !mkdir( (*it_map).second ) )
                    cout << "could not create " << (*it_map).second << ": " << GetLastError() << '\n';
                else if( !CopyFile( ( from + "\\" + *it_vec ).c_str(), ((*it_map).second + "\\" + *it_vec ).c_str(), false ) )
                    cout << "could not copy: " << GetLastError() << '\n';
                else
                    cout << "ok\n";
 
                break;
            }
        }
    }
 
    return 0;
}

Не по теме:

Сто лет не писал на WinAPI. Столько всего позабывалось...

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