Форум программистов, компьютерный форум 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++
Всем привет. Есть простое заданеие из первых уроков учебника Шитдта о перегрузке функции. Все компелится и работает если бы не одно НО. В функции с аргументами и выходными данными двойнеой точности не работает строка вывода. Я ей вставляю но он никак не реагирует, только возвращает значение. Вот код. #include <iostream> using namespace std; int min(int a,int b); char min(char a,char b);...
C++ Исправить ошибку LNK2019: ссылка на неразрешенный внешний символ (InternetCheckConnection и WinAPI)
Создаю простенькое приложение на winapi с кнопкой и полем edit, по нажатию на которую происходит проверка подключения к интернету и вывод результата в поле: if (InternetCheckConnection("http://ya.ru", FLAG_ICC_FORCE_CONNECTION, 0)) { SendMessage(edit, WM_SETTEXT, NULL, (LPARAM)"Соединение с сетью установлено"); } else { SendMessage(edit, WM_SETTEXT, NULL, (LPARAM)"Нет соединения с...
C++ Скопировать файл xlsx формата, в копию внести изменения и сохранить http://www.cyberforum.ru/cpp-beginners/thread1800777.html
Добрый вечер. У меня есть задача, которая заключается в следующем. Написать консольное приложение, которое скопирует файл xlsx формата, в копию внесет изменения и сохранит. Собственно вот в чем основной вопрос. Как мне это сделать?)) Не прошу сделать за меня. Просто помочь советом и направить. Бесплатных библиотек пока что не смог найти. Если еще короче. Как мне считать данный с файла xlsx...
C++ Найти значение числа Пи по формуле произведения Добрый вечер уважаемые программисты!!! Задача довольно таки не сложная но возникли определенные трудности. Описание задачи: Описать функцию Pi(eps), которая находит значение числа Пи по формуле произведения (т.е. по формуле Валлиса): Пи/2 = 2/1*2/3 x 4/3*4/5 x 6/5*6/7 ... с указанной точностью eps. Обратится к функции со значениями точности 0.01, 0.001, 0.0001. подробнее

Показать сообщение отдельно
Керра
Модератор
 Аватар для Керра
1270 / 438 / 45
Регистрация: 24.08.2011
Сообщений: 2,123
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;
}
Вложения
Тип файла: txt input1.txt (52 байт, 3 просмотров)
Тип файла: txt input2.txt (42 байт, 2 просмотров)
Тип файла: txt result.txt (37 байт, 3 просмотров)
 
Текущее время: 14:58. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru