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

Посмотреть код - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ С-строки. Где храняться? Когда удаляются? http://www.cyberforum.ru/cpp-beginners/thread631807.html
есть, к примеру, такой класс class Hero { private: char * name; public: Hero(char * n = "TORIN")
C++ Что есть причиной ошибки? Здравствуйте. Задача: Функция, принимает в качестве параметров: многозначное целое число, символ – разделитель. Возвращает строку вида: 1*232*233 Вот моё решение: #include <iostream> using namespace std; void Chislo(int, char); void main() { int Dig; http://www.cyberforum.ru/cpp-beginners/thread631795.html
C++ "Анонимные" (временные) объекты?
Пусть имеется класс T: class T { public: int a; int b; T(int _a, int _b) : a(_a), b(_b) {} } Имеется функция void func(T* obj)
Массив объектов класса C++
class abc { public: int x,y; }; abc all; int main() { all.x=5; all.x=6;
C++ Пролетает cin >> http://www.cyberforum.ru/cpp-beginners/thread631775.html
Нужно заполнять вектор пока не введено 'x', потом сложить количество (введенное) первых элементов. После 'x' программа сразу завершается!!! . И еще вопрос как фильтровать ввод cin >> (число) от не числа. Спасибо!!! #include <iostream> #include <vector> using namespace std; int main() { vector<double> stream;
C++ пишем свой троян с нуля Всем привет)))соглашусь, что изобретаю велосипед, но хочется сделать все своими ручками не прибегая к open source и т.п. для повышения своего опыта в программировании на Visual C++ . Хочу, чтобы меня поставили на иснниный путь. Итак, цель - написание трояна, а именно кейлоггера) для получения пароля от vk.com. Погуглил , почитал мануалы парочку часов, узнал основные схемы проникновения троянов на... подробнее

Показать сообщение отдельно
DaskOFF
112 / 112 / 9
Регистрация: 02.05.2012
Сообщений: 521
Записей в блоге: 1
05.08.2012, 15:40  [ТС]     Посмотреть код
вот, что-то исправил, что-то переписал. Прошу взглянуть еще раз.

main.cpp
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
/*
* Программа принимает у пользователя путь к файлу.  
* Разбирает файл по строкам и словам.
* Пользователь может ввести любое слово и получить данные в виде номеров строк в которых встречается данное слово.
* При желании вывести эти строки, начать поиск другого слова или выбрать другой файл.
*/
 
#include <iostream>
#include <fstream>
#include <sstream>
#include <map>
#include <set>
#include <vector>
#include <string>
#include <algorithm>
#include <iterator>
#include "TextQuery.h"
 
void text_menu();                               // меню
bool open_file(std::ifstream&, std::string);    // открытие файла
 
int main() 
{
    //открытие файла
    std::string file_name_str;
    std::ifstream file_with_text;
 
Select_another_file:    
    std::cout << "Enter file name and its type(name.type), enter to exit closep" << std::endl
            << " -> ";
    bool open = true;
    do {
        if (!open) {
            system("cls");
        std::cout << "Error file not found!" << std::endl
            << "Enter file name and its type(name.type), enter to exit closep" << std::endl
            << " -> ";
        }
        open = false;
        std::cin >> file_name_str;
        if (file_name_str == "closep")
            return 0;
    }while (!open_file(file_with_text, file_name_str));
 
 
    Quer tq;
    tq.lines_from_file_add_to_vector(file_with_text);       // каждую строку в вектор
    //закрытие файла(больше не понадобится)
    file_with_text.close();
 
    //заполняем карту
    tq.line_to_word_in_map();
    
    // Для искомого слова
    std::string word_for_search;
    bool fail = false;          // Результат поиска файла
 
Search_any_word:
    //Ввод слова и вывод результатов
    do {
        fail ? std::cout << "Please try again." <<std::endl << "-> " :
            std::cout << "What word search?" << std::endl << "-> ";
        std::cin >> word_for_search;
        tq.print_result(word_for_search, fail);
    }while(fail);
    std::cout << std::endl;
 
    //Меню
    text_menu();            
    
    //проверка ответов (меню)
    do {
        int otv;
        std::cin >> otv;
        switch (otv) {
            case 1:
                tq.output_lines(word_for_search);
                std::cout << std::endl;
                text_menu();
                break;
            case 2:
                goto Search_any_word;               
                break;
            case 3:
                system("cls");
                goto Select_another_file;
                break;
            case 0:
                return 0;
            default:    
                std::cout << "-> ";
                break;
        }
    }while (true);
 
    return 0;
}
 
////////////////////////////////////////////////////////////////////////
 
// меню
void text_menu()
{
    std::cout << "To show themselves prompt, type 1" << std::endl
        << "To find another word enter 2" << std::endl
        << "To select another file, type 3" << std::endl
        << "To exit, type 0" << std::endl << "-> " << std::flush;
}
 
//Открываем файл
bool open_file(std::ifstream& f, std::string name_file)
{ 
    f.close();
    f.clear();
    f.open(name_file.c_str());
    return f.is_open();
}
TextQuery.h
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
#ifndef TEXTQUERY_H
#define TEXTQUERY_H
 
#include <iostream>
#include <fstream>
#include <sstream>
#include <map>
#include <set>
#include <vector>
#include <algorithm>
#include <iterator>
#include <string>
 
class Quer {
public:
    typedef std::map<std::string, std::set<int> >::const_iterator map_const_iter;   // Вывод данных по найденому слову
    typedef std::vector<std::string> vector_str;                                    // Вектор строк
    typedef std::vector<std::string>::const_iterator vector_str_const_iter;         // Константный итератор на вектор строк
 
    // МЕТОДЫ
    void lines_from_file_add_to_vector(std::ifstream&);         // Заполнение вектора строками из файла
    void line_to_word_in_map();                                 // Разбор строк и заполнение карты
    vector_str get_vector() const;                              // Получение вектора
    std::map<std::string, std::set<int> > get_map() const;      // Получение карты
    map_const_iter get_iter_word_map(std::string);              // Получение итератора найденого слова в карте
    void print_result(std::string, bool&);                      // Вывод результата
    void output_lines(std::string);                             // Вывод строк с найденым словом
    
 
private:
    std::map<std::string, std::set<int> > word_map;     // Карта хранящая слово(ключ) и номера строк в которых оно встречается(набор)
    std::vector<std::string> line_text;                 // Вектор хранящий каждую строку текста
};
 
void not_punct (std::string&);                  // Удаление знаков пунктуации и приведение к строчному виду
 
#endif
TextQuery.cpp
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
#include <iostream>
#include <fstream>
#include <sstream>
#include <map>
#include <set>
#include <vector>
#include <string>
#include <algorithm>
#include <iterator>
#include "TextQuery.h"
 
//Заполняем вектор строками из открытого файла
void Quer::lines_from_file_add_to_vector(std::ifstream &f) 
{
    std::string line;
    while (std::getline(f, line)) {
        line_text.push_back(line);
    }       
}
 
//Удаление знаков пунктуации и перевод к строчному виду выбраного слова
void not_punct(std::string &pun)
{
    pun.erase(std::remove_if(pun.begin(),pun.end(),ispunct), pun.end()); //Удаление знаков пунктуации
    for(std::string::size_type i(0); i != pun.length(); i++) {           // Перевод слова к строчному виду
        if (isupper(pun[i]))
            pun[i] = tolower(pun[i]);
    }
}
 
//Разбираем строки по словам и заполняем карту
void Quer::line_to_word_in_map()
{
    std::size_t count(1);       //нормера строк для пользователя
    for(std::vector<std::string>::const_iterator iter=line_text.begin();
                                            iter != line_text.end(); iter++, count++) {
            std::istringstream stream(*iter);
            std::string word;
            while (stream >> word) {
                not_punct(word);
                word_map[word].insert(count);
            }
 
    }
}
 
//Получение данных вектора
Quer::vector_str Quer::get_vector() const
{
    Quer::vector_str ver;
    std::copy (line_text.begin(), line_text.end(), std::back_inserter(ver));
    return ver;
}
 
//Получение карты
std::map<std::string, std::set<int> > Quer::get_map() const
{
    std::map<std::string, std::set<int> > mape;
    for(std::map<std::string, std::set<int> >::const_iterator iter = word_map.begin();
                                                        iter != word_map.end(); iter++) {
            mape.insert(std::make_pair(iter->first,iter->second));
    }
    return mape;
}
 
//Поиск слова в карте
Quer::map_const_iter Quer::get_iter_word_map(std::string word_founds)
{
    not_punct(word_founds);
    return word_map.find(word_founds);
}
 
//Вывод результата
void Quer::print_result(std::string word_found, bool &fail) 
{
    map_const_iter iter = Quer::get_iter_word_map(word_found);
    if (iter != word_map.end()) {
        system("cls");
        std::cout << "The word \'" << word_found << "\' found in the following lines:";
        for (std::set<int>::const_iterator iter_set = iter->second.begin(); iter_set != iter->second.end(); iter_set++) {
            std::cout << " " << *iter_set;
        }
        std::cout << "." << std::endl;
        fail = false;
    } else {
        std::cout << std::endl << "Word not fount!" << std::endl;
        fail = true;
    }
}
 
//Вывод строк со встречающимся словом
void Quer::output_lines(std::string word_for_search)
{
    std::cout << "The output lines: " << std::endl;
    Quer::map_const_iter iter = Quer::get_iter_word_map(word_for_search);
    for(std::set<int>::const_iterator iter_set = iter->second.begin(); iter_set != iter->second.end(); iter_set++) {
        std::cout << "(line " << *iter_set << ") " << line_text[*iter_set-1] << std::endl;
    }
}
 
Текущее время: 01:43. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru