Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.06.2023, 21:07   #1
Женя32
Форумчанин
 
Регистрация: 12.09.2008
Сообщений: 621
Счастье Как найти строку?

Здравствуйте!
Подскажите, пожалуйста, как найти нужную строку из двух похожих?
Например
... Первый канал
... Первый канал HD
... Россия 1
... Россия 1 HD
и т.д.
Мне нужно найти только те строки, где нет HD.
Женя32 вне форума Ответить с цитированием
Старый 26.06.2023, 22:43   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

если размер < 2 или (предпоследний символ != H и последний != D) в цикле
p51x вне форума Ответить с цитированием
Старый 27.06.2023, 02:52   #3
Пётр Седов
Форумчанин
 
Регистрация: 26.10.2022
Сообщений: 119
По умолчанию

Женя32, я бы завёл такую функцию-фильтр:
Код:
#include <string.h>

bool is_hd(const char* channel_title) {
  int len = strlen(channel_title);
  return (len >= 3) && (channel_title[len - 3] == ' ') && (channel_title[len - 2] == 'H') && (channel_title[len - 1] == 'D');
}
А как её использовать, это зависит от того, что конкретно вам нужно делать.
Или начиная с C++20 можно использовать метод std::string_view::ends_with.
Пётр Седов вне форума Ответить с цитированием
Старый 27.06.2023, 09:39   #4
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,550
По умолчанию

HD может быть и не в конце строки? Это меняет дело.
digitalis вне форума Ответить с цитированием
Старый 27.06.2023, 10:12   #5
Steelcraft
Форумчанин
 
Регистрация: 13.03.2023
Сообщений: 111
По умолчанию

Цитата:
Сообщение от Женя32 Посмотреть сообщение
Мне нужно найти только те строки, где нет HD.
Регулярные выражения.
Steelcraft вне форума Ответить с цитированием
Старый 27.06.2023, 14:27   #6
Женя32
Форумчанин
 
Регистрация: 12.09.2008
Сообщений: 621
По умолчанию

А вот такие строки как отличить?:
... tvg-name="Первый канал" tvg-logo="http:.......
... tvg-name="Первый канал HD" tvg-logo="http:...
Женя32 вне форума Ответить с цитированием
Старый 27.06.2023, 14:54   #7
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

Абсолютно также, взять tvg-name и если ... см. выше
p51x вне форума Ответить с цитированием
Старый 27.06.2023, 15:20   #8
Женя32
Форумчанин
 
Регистрация: 12.09.2008
Сообщений: 621
По умолчанию

Почему ошибка?
Ошибка (активно) E0020 идентификатор "string_view" не определен.
Код:
using namespace std;
#include <string_view>
....
 bool found = string_view(str_current).end_with(str_pattern); // Сравниваем i-тый шаблон с i-тым каналом, если совпадения есть, то функция string_view вернет значение true

                    if (found) {
                        ofstream out("hello.txt", ios::app); // открываем файл для записи
                        if (out.is_open())
                        {
                            // запись в файл и вывод на консоль
                            out << str_current << endl;
                            cout << str_current << endl;
                        }
                        out.close(); // закрываем файл для записи
Женя32 вне форума Ответить с цитированием
Старый 27.06.2023, 18:29   #9
Женя32
Форумчанин
 
Регистрация: 12.09.2008
Сообщений: 621
По умолчанию

Цитата:
Сообщение от Женя32 Посмотреть сообщение
Почему ошибка?
Ошибка (активно) E0020 идентификатор "string_view" не определен.
Для string_view нужен 17 стандарт (и выше) C++.
Женя32 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
поиск самой и группировка по подстроке CodeNOT PHP 0 16.05.2016 18:32
как найти индекс массива в подстроке??? potiyko Visual C++ 1 20.09.2014 11:03
Поиск подстроки в подстроке. Pein95 Общие вопросы C/C++ 7 03.05.2014 15:24
Ввести строку символов. Найти комбинацию из двух букв по всей строке, удалить их и сдвигать строку на пустые места AdelinaMango Общие вопросы C/C++ 9 02.04.2014 08:24
[C++]Добавить подстроку к каждой заданной подстроке Бинари Помощь студентам 1 14.10.2011 07:40