Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/3: Рейтинг темы: голосов - 3, средняя оценка - 5.00
0 / 0 / 2
Регистрация: 24.05.2017
Сообщений: 87
1

Строка: удалить все html теги из входной строки

24.09.2017, 22:32. Просмотров 588. Ответов 7
Метки нет (Все метки)


написал вот такой код
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
using namespace std;
int main()
{
    string str = "<strong>text tebfdfdksf.</strong><a href=//www.example.com>fdsfsdfsdfds";
    int i = 0,i1 = 0;
    i=str.find("<");
    i1=str.find(">");
    string str1 =str.erase (i,i1+i+1);
    cout<<str1<<endl;
    
    int b = 0,b1 = 0;
    b=str.find("<",i);
    b1=str.find(">",i1+1);
    string str2 =str.erase (b,b1+b+1);
    cout<<str2<<endl;
    
    int c = 0,c1 = 0;
    c=str.find("<",b+1);
    c1=str.find(">",b1+1);
    string str3 =str.erase (c,c1+c+1);
    cout<<str3<<endl;
}
он удаляет html теги из строки
вопрос в следующем, если строка str динамическая и количество тегов постоянно меняется то код не сработает, как исправить эту проблему?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.09.2017, 22:32
Ответы с готовыми решениями:

Удалить все комментарии и теги из HTML файла
Есть задание: Написать сценарий для sed и awk для удаления тегов и комментариев HTML. Теги и...

Как удалить все теги img из html кода?
Ребят подскажите как удалить все теги img их html кода.

Работа с текстом. Необходимо удалить все HTML теги
Есть текст, но в нем очень не удобно расположены html теги. Если возможность удалить эти теги и...

Удалить все теги , кроме тега <a .>.</a> со страницы html. Результат вывести на экран
Здравствуйте , мне нужно выполнить следующее задание : Дан текст HTML-страницы (скачать по ссылке...

7
0 / 0 / 2
Регистрация: 24.05.2017
Сообщений: 87
24.09.2017, 23:58  [ТС] 2
Цитата Сообщение от Atakai Посмотреть сообщение
std::string::reserve резервирует место под хранение
std::string::append добавляет символы в конец строки

Источник: http://ru.cppreference.com/w/c... sic_string
вы меня не совсем правильно поняли
я имел в виду что допустим стринг был такой
C++
1
string str = <strong>text tebfdfdksf.</strong><a href=//www.example.com>fdsfsdfsdfds
а потом стал таким
C++
1
string str = <strong>text tebfdfdksf.</strong><a href=//www.example.com>fdsfsdfsdfds string str = <strong>text tebfdfdksf.</strong><a href=//www.example.com>fdsfsdfsdfds</strong>ghjhkjhjkkj</strong>
то мой код уже не сработает
0
0 / 0 / 2
Регистрация: 24.05.2017
Сообщений: 87
25.09.2017, 01:40  [ТС] 3
Цитата Сообщение от Atakai Посмотреть сообщение
alex14058, вам надо удалять все теги, а не только три первых. Это можно сделать в цикле:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
using namespace std;
int main()
{
    string str = "<strong>text tebfdfdksf.</strong><a href=//www.example.com>fdsfsdfsdfds</strong>ghjhkjhjkkj</strong>";    
    
    size_t posStart = 0;
    while ((posStart = str.find("<")) != std::string::npos)
    {
        size_t posEnd = str.find(">");
        str.erase(posStart, posEnd-posStart+1);
    }
    cout<<str<<endl;
}
спасибо большое, а не подскажите я правильно понимаю.функции поиска в строке возвращают npos, если требуемое значение найдено?
0
321 / 173 / 78
Регистрация: 09.10.2014
Сообщений: 808
25.09.2017, 01:43 4
Цитата Сообщение от alex14058 Посмотреть сообщение
спасибо большое, а не подскажите я правильно понимаю.функции поиска в строке возвращают npos, если требуемое значение найдено?
npos возвращается, если значение не найдено.
0
0 / 0 / 2
Регистрация: 24.05.2017
Сообщений: 87
25.09.2017, 01:52  [ТС] 5
и вот в этой строке str.erase(posStart, posEnd-posStart+1); получается такое условие вырежи все от posStart '<' до posEnd-posStart+1 это количество вырезаемых элементов, зарание извините за банальные вопросы ,просто хочется разобраться и понять)
0
321 / 173 / 78
Регистрация: 09.10.2014
Сообщений: 808
25.09.2017, 02:00 6
Цитата Сообщение от alex14058 Посмотреть сообщение
и вот в этой строке str.erase(posStart, posEnd-posStart+1); получается такое условие вырежи все от posStart '<' до posEnd-posStart+1 это количество вырезаемых элементов, зарание извините за банальные вопросы ,просто хочется разобраться и понять)
Именно так.
0
0 / 0 / 2
Регистрация: 24.05.2017
Сообщений: 87
25.09.2017, 04:44  [ТС] 7
Цитата Сообщение от lArtl Посмотреть сообщение
npos возвращается, если значение не найдено.
спасибо
грубо говоря если значение не найдено то цикл не сработает?
0
Любитель чаепитий
3535 / 1646 / 507
Регистрация: 24.08.2014
Сообщений: 5,601
Записей в блоге: 1
25.09.2017, 13:56 8
не лучший способ вырезать html-теги.
если у меня будет такой тег:
<h1>Ololo < some text</h1>, то удалится не то, что задумывалось.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.09.2017, 13:56

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь или здесь.

Каким образом благодаря регулярному выражению можно удалить все html теги с string?
Вот допустим у нас есть string , который считал html файл, и он выглядит например так: &lt;html...

Удалить из входной строки все слова длина которых меньше L символов
Здравствуйте пользователи этого форума, мне нужна ваша помощь. Напишите программу на языке...

Строки. Даны строка S и подстрока S1.Удалить из строки S все вхождения строки S1
Даны строка S и подстрока S1.Удалить из строки S все вхождения строки S1.В строке S подсчитать...

Дан входной текстовый файл, строка S (вводится с клавиатуры). Записать в выходной файл все строки входного файла, содержащие в качестве фрагмента стро
Дан входной текстовый файл, строка S (вводится с клавиатуры). Записать в выходной файл все строки...


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

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

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