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

Вытащить текст между тегов html - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.82
den-x
0 / 0 / 0
Регистрация: 11.03.2012
Сообщений: 16
19.07.2012, 17:35     Вытащить текст между тегов html #1
Здравствуйте, форумчане!
Нужно вытащить текст между тегами.
Из этого:
HTML5
1
2
3
<html>
    <tag1>Текст 1</tag1>
<html>
Должно получиться:
HTML5
1
Текст 1
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
MrCold
851 / 749 / 71
Регистрация: 11.01.2012
Сообщений: 1,942
19.07.2012, 19:21     Вытащить текст между тегов html #2
http://liveworkspace.org/code/1b29e8...d9f55551913b25

Добавлено через 1 минуту
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
#include <stdio.h>
 
int main(void)
{
 
    char str[] = {"<html>\n<tag1>Текст 1</tag1>\n<html>"};
    char *s, st[ 50 ], *pst;
    pst = st, s = str;
    int count = 0;
 
    while ( *s )
    {
        if ( *( s - 1 ) == '>' )
                 count ++;
        if ( count > 1 )
                 *pst++ = *s;
        if (  count == 2 && *( s + 1 )== '<' )
                break;
        s++;
     }
    printf  ( "%s\n", st  );
 
return 0;
}
BRcr
 Аватар для BRcr
4003 / 2292 / 155
Регистрация: 03.02.2011
Сообщений: 5,064
Записей в блоге: 10
19.07.2012, 21:08     Вытащить текст между тегов html #3
MrCold, а зачем так жестко привязывать к количеству тегов?
Вот такую строчку уже не схарчит: "<html>\n<tag1>Текст 1<&> текст 2</tag1>\n<html>"
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
19.07.2012, 21:12     Вытащить текст между тегов html #4
Со знаками знаками > и < тоже внимательно надо, а то такое
<tag1> 1 + 1 > 1 </tag1>
уже не так считает
soon
 Аватар для soon
2536 / 1301 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
19.07.2012, 21:15     Вытащить текст между тегов html #5
Задание слишком размытое, имхо. Не показано, что нужно вытащить в общем случае. Как только задание прояснится, можно будет смело регуляркой пройтись.
MrCold
851 / 749 / 71
Регистрация: 11.01.2012
Сообщений: 1,942
19.07.2012, 21:32     Вытащить текст между тегов html #6
Цитата Сообщение от BRcr Посмотреть сообщение
а зачем так жестко привязывать к количеству тегов
Цитата Сообщение от Thinker Посмотреть сообщение
Со знаками знаками > и < тоже внимательно надо
Оринтировался только на текст от ТC

Цитата Сообщение от soon Посмотреть сообщение
Задание слишком размытое
Intel~lect
 Аватар для Intel~lect
135 / 124 / 2
Регистрация: 03.07.2012
Сообщений: 355
19.07.2012, 22:23     Вытащить текст между тегов html #7
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
#include <iostream>
#include <windows.h>
 
using namespace std;
 
int main()
{
    SetConsoleCP(1251); SetConsoleOutputCP(1251);
 
    char str[1000];
    char str_out[1000];
    int j, k=0;
 
    cout << "Введите строку:" << endl;
    cin.getline(str, 1000);
 
 
    for (int i=0; i<strlen(str)-1; i++)
    {
        j = i;
 
        if ( (str[i] == '>') && (str[i+1] != '/'))
        {
            // удалить лишние пробелы, табуляции и новые строки  перед строкой
            while ( (str[j+1] == ' ') || (str[j+1] == '\t') || (str[j+1] == '\n') )
                j++;
 
            while (str[++j] != '<')
                str_out[k++] = str[j];
        }
    }
 
    cout << str_out << endl;
 
 
    system("pause");
    return 0;
}
Миниатюры
Вытащить текст между тегов html  
gray_fox
What a waste!
 Аватар для gray_fox
1244 / 1127 / 53
Регистрация: 21.04.2012
Сообщений: 2,350
Завершенные тесты: 3
20.07.2012, 00:53     Вытащить текст между тегов html #8
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
#include <iostream>
#include <string>
 
 
int main() {
   std::string const page =
      "<html>"
         "<head>"
            "<title>Some title</title>"
         "</head>"
         "<body>"
            "<tag>Some content</tag>"
         "</body>"
      "</html>";
   std::string const tag = "tag";
   std::string text;
   
   std::string const opening = "<" + tag + ">";
   std::string const closing = "</" + tag + ">";
   std::string::size_type begin = page.find(opening);
   if (begin != std::string::npos) {
      begin += opening.length();
      std::string::size_type end = page.find(closing, begin);
      if (end != std::string::npos) {
         text = page.substr(begin, end - begin);
      }
   }
   
   std::cout << text << std::endl;
}
http://liveworkspace.org/code/5e319c...d3c71d92e3b582

Добавлено через 36 минут
Если тег не один, то можно как нибудь так:
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
#include <iostream>
#include <string>
 
#include <boost/regex.hpp>
 
 
int main() {
   std::string const page =
      "<html>"
         "<head>"
            "<title>Some title</title>"
         "</head>"
         "<body>"
            "<tag>Some content</tag>"
            "<another tag>"
               "<tag>Content</tag>"
            "</another tag>"
            "<tag>Another content</tag>"
         "</body>"
      "</html>";
   std::string const tag = "tag";
   std::string text;
   
   boost::regex regex("<" + tag + ">(.*?)</" + tag + ">");
   for (boost::sregex_iterator it(page.cbegin(), page.cend(), regex); it != boost::sregex_iterator(); ++it) {
      std::cout << (*it)[1] << std::endl;
   }
 
   std::cout << text << std::endl;
}
http://liveworkspace.org/code/aa452c...fe7eee297e2f6a
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.07.2012, 03:47     Вытащить текст между тегов html
Еще ссылки по теме:

Удаление выбранных тегов (html-страница) C++
C++ Правила вложенности тегов html (html разметка на С++)
Не правильно отображается текст html в консоли C++

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

Или воспользуйтесь поиском по форуму:
den-x
0 / 0 / 0
Регистрация: 11.03.2012
Сообщений: 16
20.07.2012, 03:47  [ТС]     Вытащить текст между тегов html #9
gray_fox, это то что нужно, спасибо!
Yandex
Объявления
20.07.2012, 03:47     Вытащить текст между тегов html
Ответ Создать тему
Опции темы

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