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

Как ускорить работу с файлами? - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Как поместить в STL-контейнер экземпляры разных классов? http://www.cyberforum.ru/cpp-beginners/thread1800935.html
Как поместить в контейнер экземпляры разных классов(типов) :thank_you:?
C++ Multiple definition: почему компилятор ругается на единственную функцию, используемую в обоих source-файлах? Пихаю хедер в 2 сурсца разных классов. Компилятор ругается на единственную функцию, которую я использую в обоих сурсцах. #ifndef LIB #define LIB void func() {} #endif // LIB Файл: A.cpp http://www.cyberforum.ru/cpp-beginners/thread1800877.html
Почему не работает cout в перегруженной функции? C++
Всем привет. Есть простое заданеие из первых уроков учебника Шитдта о перегрузке функции. Все компелится и работает если бы не одно НО. В функции с аргументами и выходными данными двойнеой точности...
C++ Исправить ошибку LNK2019: ссылка на неразрешенный внешний символ (InternetCheckConnection и WinAPI)
Создаю простенькое приложение на winapi с кнопкой и полем edit, по нажатию на которую происходит проверка подключения к интернету и вывод результата в поле: if...
C++ Скопировать файл xlsx формата, в копию внести изменения и сохранить http://www.cyberforum.ru/cpp-beginners/thread1800777.html
Добрый вечер. У меня есть задача, которая заключается в следующем. Написать консольное приложение, которое скопирует файл xlsx формата, в копию внесет изменения и сохранит. Собственно вот в чем...
C++ Найти значение числа Пи по формуле произведения Добрый вечер уважаемые программисты!!! Задача довольно таки не сложная но возникли определенные трудности. Описание задачи: Описать функцию Pi(eps), которая находит значение числа Пи по формуле... подробнее

Показать сообщение отдельно
MayaNash
1285 / 453 / 47
Регистрация: 24.08.2011
Сообщений: 2,214
02.09.2016, 16:33  [ТС]
Вроде все хорошо, только Игоря он почему-то не находит
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
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
#define _CRT_SECURE_NO_WARNINGS
#include <fstream>
#include <iostream>
#include <string>
#include <Windows.h>
#include <vector>
#include <algorithm>
using namespace std;
 
//#define DEBUG
 
struct Line {
    string id1, id2, name;
    Line(string id1 = "", string id2 = "", string name = "") {
        this->id1 = id1;
        this->id2 = id2;
        this->name = name;
    }
    Line(const Line &r) {
        *this = r;
    }
    Line& operator=(const Line &r) {
        id1 = r.id1;
        id2 = r.id2;
        name = r.name;
        return *this;
    }
    bool operator<(const Line &r) const {
        if (id1 < r.id1)
            return true;
        else
            return id2 < r.id2;
    }
    bool operator>(const Line &r) const {
        if (id1 > r.id1)
            return true;
        else
            return id2 > r.id2;
    }
    bool operator==(const Line &r) const {
        return id1 == r.id1 && id2 == r.id2;
    }
};
 
void parse(ifstream &f, vector<Line> &v) {
    Line line;
 
    while (!f.eof()) {
        getline(f, line.name, ':');
        getline(f, line.id1, ':');
        getline(f, line.id2);
#ifdef DEBUG
        cout << '[' << line.name << "] [" << line.id1 << "] [" << line.id2 << "]\n";
#endif
        v.push_back(line);
    }
    sort(v.begin(), v.end());
}
 
bool find(vector<Line> v, Line &line) {
    pair<vector<Line>::iterator, vector<Line>::iterator> itPair =
        equal_range(v.begin(), v.end(), line);
    if (itPair.first != v.end()) {
        line.name = itPair.first->name;
        return true;
    }
    else
        return false;
}
 
void mergeFiles(ifstream &f1, ifstream &f2, ofstream &fRes) {
    string name;
    Line line;
    vector<Line> v;
    v.reserve(100000);
    parse(f1, v);
    while (!f2.eof()) {
        getline(f2, line.id1, ':');
        getline(f2, line.id2, ':');
        getline(f2, name);
        if (find(v, line))
            fRes << line.name << ':' << name << endl;
    }
}
 
int main() {
    string file1path, file2path, fileResultPath;
    ifstream file1, file2;
    ofstream fileResult;
 
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
 
    cout << "Путь к первому файлу > ";
    getline(cin, file1path);
    cout << "Путь ко второму файлу > ";
    getline(cin, file2path);
    cout << "Путь к файлу для записи результата > ";
    getline(cin, fileResultPath);
 
    file1.open(file1path.c_str());
    file2.open(file2path.c_str());
    fileResult.open(fileResultPath.c_str());
 
    if (file1.is_open() && file2.is_open()) {
        mergeFiles(file1, file2, fileResult);
        file1.close();
        file2.close();
        fileResult.close();
        cout << "Готово!\n";
    }
    else
        cout << "Проблема с открытием файлов!\n";
 
    system("pause");
    return 0;
}
0
Вложения
Тип файла: txt input1.txt (52 байт, 3 просмотров)
Тип файла: txt input2.txt (42 байт, 2 просмотров)
Тип файла: txt result.txt (37 байт, 3 просмотров)
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru