Форум программистов, компьютерный форум 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. Погуглил , почитал мануалы парочку часов, узнал основные схемы проникновения троянов на... подробнее

Показать сообщение отдельно
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
02.08.2012, 02:44     Посмотреть код
Как по мне так дикий оверхед, но ладно, это учитывать не будем - замечания.

1) Название методов должно быть говорящим, если я вижу
C++
1
void add_line_to_vec(std::ifstream&);
я понимаю, что функция добавляет строку в вектор... Однако принимает она файл. Да и как оказывается еще и все строки из файла добавляет.
2)
C++
1
2
void get_vec(std::vector<std::string>&);                // Получение вектора
    void print_map(std::map<std::string, std::set<int> > &); // получение карты
Логичнее сделать
C++
1
2
std::vector<std::string> get_vec() const;
std::map<std::string, std::set<int> > get_map() const;
А может даже по ссылке или const-ссылке возвращать (по ссылке, если снаружи можно менять данные, по const-ссылке, если нельзя).

3)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
//Открываем файл
void open_file(std::ifstream& f, std::string ss)
{ 
    if (std::ifstream(ss.c_str()) == NULL) {
        system("cls");
        std::cout << "Error file not found!" << std::endl
            << "Enter file name and its type(name.type)" << std::endl
            << " -> ";
        std::string if_error;
        std::cin >> if_error;
        open_file(f, if_error);
    } else {
        f.open(ss.c_str());
        system("cls");
        std::cout << "Excellent! The file \'"<< ss
            << "\' is opened!" << std::endl;
    }
}
Бредовый метод несколько. Тут будет несколько замечаний.

3.1)
C++
1
(std::ifstream(ss.c_str()) == NULL)
NULL - это Си. В С++ нужно было юзать 0, а теперь в С++11 нужно юзать nullptr. Ну а конкретно в данном случае лучше использовать is_open.
3.2) Файл пытается открыться два раза (т.е. если условие ложно - файл уже открыт, а вы потом еще раз его открываете).
3.3) Рекурсия здесь абсолютно не к месту. Если юзер подал неверный файл - выкидываем эксепшн, т.к. это ошибка, а в программе, которая это использует уже делаем какую-нибудь обработку этого исключения.
4) not_punсt как уже сказали лучше использовать std::remove_if.
5) Вывод в методах на консоль, использование очистки консоли и т.д. - плохо.
6) Вообще не юзаются const-ссылки, не юзаются const-функции класса.

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