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

Копирование файлов в папку по условию - C++

Восстановить пароль Регистрация
 
Morfeus
9 / 9 / 1
Регистрация: 22.10.2010
Сообщений: 110
22.11.2012, 19:22     Копирование файлов в папку по условию #1
Дано два каталога(dir1, dir2), содержащих файлы *.txt и не содержащие подкаталогов. Наполнить третий каталог (RESULT):
-для каждого файла, который есть и в первом и во втором каталогах, но отличается построчно, нужно сформировать следующий файл разницы t.txt: для тех строк которые отличаются и только для них заносить следующее: 1= «строка из файла 1 каталога», 2= «строка файл из 2 каталога».
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.11.2012, 19:22     Копирование файлов в папку по условию
Посмотрите здесь:

Извлечение файлов из SFX-архива в указанную папку C++
C++ Копирование файлов
C++ Копирование файлов
копирование файлов C++
Копирование файлов в папку рядом с программой C++
C++ Копирование dll в целевую папку
Как очистить папку от всех файлов C++
Копирование части вектора в другой вектор по условию, функцией copy_if C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
igorrr37
 Аватар для igorrr37
1593 / 1221 / 118
Регистрация: 21.12.2010
Сообщений: 1,868
Записей в блоге: 7
23.11.2012, 01:17     Копирование файлов в папку по условию #2
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 <iostream>
#include <boost/filesystem.hpp>
#include <windows.h>
#include <set>
#include <string>
#include <boost/filesystem/fstream.hpp>
#include <algorithm>
#include <stdexcept>
#include <iterator>
namespace fs = boost::filesystem3;
 
void GetFileNames(std::string const& dirpath, std::set<std::string>& set)
{
    fs::directory_iterator ib(dirpath), ie;
    for(; ib != ie; ++ib)
    {
        set.insert(ib->path().filename().string());
    }
}
 
int main()
{
    SetConsoleOutputCP(1251);
    try
    {
        std::string arrpath[] = {"c:/Test1", "c:/Test2", "c:/Test3"};
        for(auto const& s : arrpath)
        {
            if(!fs::exists(s))
                throw std::runtime_error("fs::exists failed on path: " + s);
        }
        std::set<std::string> arrset[3];
        GetFileNames(arrpath[0], arrset[0]);
        GetFileNames(arrpath[1], arrset[1]);
        std::set_intersection(arrset[0].begin(), arrset[0].end(), arrset[1].begin(), arrset[1].end(), std::inserter(arrset[2], arrset[2].begin()));
        fs::ifstream ifs1, ifs2;
        fs::ofstream ofs;
        std::string s1, s2;
        for(auto const& sfilename : arrset[2])
        {
            ifs1.open((arrpath[0] + '/' + sfilename).c_str()), ifs2.open((arrpath[1] + '/' + sfilename).c_str());
            if(ifs1.is_open() && ifs2.is_open())
            {
                s1.assign(std::istreambuf_iterator<char>(ifs1.rdbuf()), std::istreambuf_iterator<char>());
                s2.assign(std::istreambuf_iterator<char>(ifs2.rdbuf()), std::istreambuf_iterator<char>());
                if(s1 != s2)
                {
                    ofs.open((arrpath[2] + '/' + sfilename).c_str());
                    if(ofs.is_open())
                    {
                        ifs1.clear();
                        ifs1.seekg(0);
                        ifs2.clear();
                        ifs2.seekg(0);
                        for(;  ; )
                        {
                            if(!std::getline(ifs1, s1))
                                s1.clear();
                            if(!std::getline(ifs2, s2))
                                s2.clear();
                            if(!ifs1 && !ifs2)
                                break;
                            if(s1 == s2)
                                ofs << s1 << '\n';
                            else
                            {
                                ofs << "1 = \"" << s1 << "\", 2 = \"" << s2 << "\"\n";
                            }
                        }
                        ofs.close();
                    }
                    else std::cerr << "Unable to open output file " << sfilename << std::endl;
                }
                ifs1.close();
                ifs2.close();
            }
            else
                std::cerr << "Unable to open file(s): " << sfilename << std::endl;
        }
    }
    catch(std::exception const& e)
    {
        std::cerr << "Exception in main: " << e.what() << std::endl;
    }
    return 0;
}
Yandex
Объявления
23.11.2012, 01:17     Копирование файлов в папку по условию
Ответ Создать тему
Опции темы

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