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

Удаление одинаковы строк - C++

Восстановить пароль Регистрация
 
Suares
0 / 0 / 0
Регистрация: 28.02.2013
Сообщений: 106
17.11.2013, 19:43     Удаление одинаковы строк #1
Допустим у меня есть строка s и я хочу удалить одинаковые подстроки в ней.
Сначала я извлекаю подстроки до символа '\n' из s с помощью функции read_line. При первом вызове этой функции я получу subs = "Hello world\n" ну и т. д.
В цикле while сначала игнорирую оригинальную подстроку. С помощью "it + subs.size()" перепрыгиваю оригинальную подстроку и далее ищу её копию или копии, если такие будут. Ну и удаляю её.
Но у меня ошибка, которая говорит, что итератор смещается за пределы диапазона!

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
#include <iostream>   
#include <algorithm>    
#include <string>
 
bool read_line(const std::string& str, std::string& substr);
 
int main() 
{
    std::string s = "Hello world\nI live in UA\nHello world\nI like football\nHello world\n";
    std::string::iterator it;
    std::string subs = "";
 
    while(read_line(s, subs))
    {
        it = std::search(s.begin(), s.end(), subs.begin(), subs.end());                 // ignore original string
        it = std::search(it + subs.size(), s.end(), subs.begin(), subs.end());      // find copy subs in s
 
        while(it != s.end())
        {
            s.erase(it, it + subs.size());
    
            it = std::search(it + subs.size(), s.end(), subs.begin(), subs.end()); // find another copy subs in s
        }
    }
    std::cout << std::endl << s << std::endl;
 
    return 0;
}
 
bool read_line(const std::string& str, std::string& substr)
{
    static unsigned i = 0;
 
    if(i == str.size())
        return false;
    else
    {
        substr.clear();
 
        while(str[i] != '\n')
            substr += str[i++];
 
        substr += '\n';
        ++i;
    }
    
    return true;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.11.2013, 19:43     Удаление одинаковы строк
Посмотрите здесь:

C++ Удаление строк из файла
Удаление из строк C++
C++ Удаление последних строк.
Удаление из строк C++
C++ Удаление строк в файле
Матрицы. Удаление строк. C++
C++ 23. Дана целочисленная матрица А размером N х М. Составить функцию, выводящую номера строк, все элементы которых одинаковы
Сформировать вектор, в который записать номера строк, в которых все элементы массива одинаковы. C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

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