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

Убрать повторяющиеся строки из файла - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Описать структуру: Отдел кадров http://www.cyberforum.ru/cpp-beginners/thread790403.html
Описать структуру: Отдел кадров Фамилия Инициалы Год рожд Оклад Иванов И.И. 1975 517.50 Петренко П.П. 1956 219.10 Паниковский М.С. 1967 300.00 Примечание: оклад установлен по состоянию на 1 января 2000 года
C++ Вывести указатель на структуру на экран тут часть проги .......................... struct STUDENT { char FamiliaIO; int nomer_gruppi; // вот структура int yspevaem; } s1,s2,*ptr; .................................. ptr = new STUDENT; http://www.cyberforum.ru/cpp-beginners/thread790401.html
C++ Нужно осуществить инжект ассемблерного кода в процесс
В процессе по определённому адресу нужно заменить инструкцию. Как указать на адрес? Тоесть мне нужно заNOPать инструкцию. НО я не знаю как это сделать В дизассемблере можно просто выделить инструкцию и заменить её. Но как сделать то же самое средствами C++
Описать структуру с именем STUDENT C++
Описать структуру с именем STUDENT, содержащую следующие поля: -фамилия и инициалы;-номер группы;-успеваемость (массив из пяти элементов).Написать программу, выполняющую следующие действия:-ввод с клавиатуры данных в массив, состоящий из 10 структур типа STUDENT; записи должны быть упорядочены по алфавиту;-вывод на дисплей фамилий и номеров групп для всех студентов, имеющих хотя бы одну оценку...
C++ Работа с файлами (запись/чтение данных из бд) http://www.cyberforum.ru/cpp-beginners/thread790379.html
Здравствуйте. Есть код(рабочий) #include <conio.h> #include <iostream.h> #include <time.h> #include <string.h> #include <stdlib.h> struct Element{
C++ Интересная штука Интересная штука происходит. Создал я значит сетевое приложение, ну естественно подключена ws2_32.lib. Так вот, даже закомпилированная в релиз, она не хочет запускаться на win7 ни в какую, ругаясь на отсутствующий dll. У самого стоит win8 и vs2012. Подскажите пожалуйста, в чем может буть дело. подробнее

Показать сообщение отдельно
xtorne21st
интересующийся
300 / 271 / 19
Регистрация: 25.09.2010
Сообщений: 1,056
20.02.2013, 00:14     Убрать повторяющиеся строки из файла
Вариант прогаммы, который оставляет только один экземпляр каждой строки (удаляет дубликаты):
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
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>
#include <string>
#include <cstdlib>
#include <iterator>
 
int main()
{
    std::string fileIn, fileOut;
 
    std::cout << "Input: ";
    std::cin >> fileIn;
    std::cout << "Output: ";
    std::cin >> fileOut;
 
    std::ifstream in(fileIn.c_str(), std::ios::in | std::ios::binary);
    std::ofstream out(fileOut.c_str(), std::ios::out | std::ios::binary);
 
    if (!in.good() || !out.good())
    {
        std::clog << "Couldn't open file(s).\n";
        exit(1);
    }
 
    std::string temp;
    std::vector<std::string> sent;
 
    std::getline(in, temp);
    while (!in.eof())
    {
        sent.push_back(temp);
        std::getline(in, temp);
    }
 
    std::ostream_iterator<std::string> oo(out, "\n");
    std::sort(sent.begin(), sent.end());
    std::unique_copy(sent.begin(), sent.end(), oo);
 
    in.close();
    out.close();
 
    return 0;
}
А вот ваш вариант:
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
#include <iostream>
#include <fstream>
#include <list>
#include <string>
#include <cstdlib>
 
int main()
{
    std::string fileIn, fileOut;
 
    std::cout << "Input: ";
    std::cin >> fileIn;
    std::cout << "Output: ";
    std::cin >> fileOut;
 
    std::ifstream in(fileIn.c_str(), std::ios::in | std::ios::binary);
    std::ofstream out(fileOut.c_str(), std::ios::out | std::ios::binary);
 
    if (!in.good() || !out.good())
    {
        std::clog << "Couldn't open file(s).\n";
        exit(1);
    }
 
    std::string temp;
    std::list<std::string> sent;
 
    std::getline(in, temp);
    while (!in.eof())
    {
        sent.push_back(temp);
        std::getline(in, temp);
    }
 
    sent.sort();
 
    for (std::list<std::string>::iterator iter1 = sent.begin(); iter1 != sent.end(); ++iter1)
    {
        std::list<std::string>::iterator iter2 = iter1;
        for ( ; iter2 != sent.end() && *iter2 == *iter1; ++iter2)
            ;
        --iter2;
        if (iter2 == iter1)
               out << *iter1 << '\n';
        else
            iter1 = iter2;
    }
 
    in.close();
    out.close();
 
    return 0;
}
Добавлено через 3 минуты
Цитата Сообщение от Tulosba Посмотреть сообщение
Можно использовать std::unique_copy например
В этом случаи один экземпляр повторяющейся строки останется.
 
Текущее время: 12:30. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru