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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Suares
0 / 0 / 0
Регистрация: 28.02.2013
Сообщений: 106
#1

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

17.11.2013, 19:43. Просмотров 174. Ответов 0
Метки нет (Все метки)

Допустим у меня есть строка 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;
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.11.2013, 19:43
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Удаление одинаковы строк (C++):

Вывести номера строк матрицы, где все элементы одинаковы - C++
задана квадратная матрица порядка n(число, вводимое пользователем). Вывести номера строк где все элементы одинаковы.матрица вводится...

Сформировать вектор, в который записать номера строк, в которых все элементы массива одинаковы. - C++
Дан двумерный массив A размера m*n. Сформировать вектор В, в который записать номера строк , в которых все элементы одинаковы. Если можно...

23. Дана целочисленная матрица А размером N х М. Составить функцию, выводящую номера строк, все элементы которых одинаковы - C++
Дана целочисленная матрица А размером N х М. Составить функцию, выводящую номера строк, все элементы которых одинаковы.РЕБЯТ ПОМОГИТЕ...

Удаление строк - C++
Есть код программы, она удаляет все числа между первым максимальным и последним минимальным числом. Проблема в том, что она удаляет еще...

Удаление из строк - C++
В символьной строке удалить все слова состоящие из нечётного количества букв.

Удаление из строк - C++
Удаление из строк всех букв со сжатием строк ( остаются цифры и символы) PS Дано: 2 строки по 80 символов.

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.11.2013, 19:43
Привет! Вот еще темы с ответами:

Удаление строк в файле - C++
Нужна программа, удаляющая в текстовом файле все строчки, начинающиеся на введенный символ. Хелп!

Матрицы. Удаление строк. - C++
Помогите решить задачку Описать процедуру RemoveRows(A, M, N, K1, K2), удаляющую из вещественной матрицы A размера M × N строки с...

удаление строк из файла - C++
Здравствуйте, помогите с задачкой.(программа многомодульная) *при покупке билета пассажир регистрируется в базе данных(Информация о...

Удаление строк из списка - C++
Задан список строк. Исключить из списка одинаковы строки. Не знаю как удалять строку из списка. // alg3.cpp : Defines the entry...


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

Или воспользуйтесь поиском по форуму:
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru