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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 04.07.2023, 20:00   #1
Женя32
Форумчанин
 
Регистрация: 12.09.2008
Сообщений: 621
Счастье Ошибка. "transform": не найдена соответствующая перегруженная функция

Здравствуйте!
Подскажите, пожалуйста, почему при подключении модуля regex выходит ошибка?:
Серьезность Код Описание Проект Файл Строка Состояние подавления
Ошибка C2672 "transform": не найдена соответствующая перегруженная функция

https://youtu.be/ZPhZgKAccdQ
Женя32 вне форума Ответить с цитированием
Старый 05.07.2023, 07:40   #2
Алексей1153
фрилансер
Форумчанин
 
Регистрация: 11.10.2019
Сообщений: 965
По умолчанию

Женя32, используешь "using namespace std;" - будь готов к боли в самый неожиданный момент

а вообще, код прикладывай текстом в тегах, а не ютубчиком. Как разбираться то?

в окне вывода ещё куча проблем отображается - и левые ескейпы, и сравнивание типов со знаком и без, ещё что-то. Всё нужно тоже исправлять

а в выводе после завершения тоже песня - потоки порушились, процесс порушился

Последний раз редактировалось Алексей1153; 05.07.2023 в 07:44.
Алексей1153 вне форума Ответить с цитированием
Старый 05.07.2023, 11:25   #3
Женя32
Форумчанин
 
Регистрация: 12.09.2008
Сообщений: 621
Счастье

Код:
#include <conio.h>
#include <iostream>
#include <string>     // для std::getline
#include <fstream> 
#include <algorithm> // для функции transform, перевод букв в нижний регистр
#include <regex>

// все пространство имен std
using namespace std;

void main_channels_list()
{
    string pattern_channel_line; // шаблон канала
    string channel_line; // i-тый канал из общего списка, текущий канал-шаблон которого ищем в общем списке каналов
    string patt_line_smail_char; // хранит названия шаблона канала в нижнем регистре, чтобы по нему можно было определить вносить этот канал в список или нет
    string channel_line_smail_char; // хранит названия канала в нижнем регистре, чтоб можно было сравнить с шаблоном
    string link_channel; // Хранит ссылку канала
    bool find_channel; // метка на то, что найден канал
    int find_link_fed_chan; // метка на то, что найдена ссылка на федеральный канал
    int find_link_reg_chan; // метка на то, что найдена ссылка на региональный канал

    ifstream file_template_channels("C:\\Users\\Home\\source\\repos\\NextPro\\x64\\\Debug\\list_template_channels.txt"); // открываем файл для чтения

    if (file_template_channels.is_open())
    {
        while (getline(file_template_channels, pattern_channel_line)) // начинаем читать файл list_templates.txt
        {
            ifstream file_list_channel("C:\\Users\\Home\\source\\repos\\NextPro\\x64\\\Debug\\list_channels.txt"); // Открываем файл с исходным списком каналов
            if (file_list_channel.is_open()) // Проверяем существования файла list_channels.txt (исходный список каналов)
            {
                ofstream create_file_out("C:\\Users\\Home\\source\\repos\\NextPro\\x64\\\Debug\\sorted_list_channels.txt");
                if (create_file_out.is_open()) {
                    create_file_out.close();  // закрываем файл для записи
                    while (getline(file_list_channel, channel_line))  // начинаем читать файл list_channels.txt
                    {
                        // отслеживаем ссылки на федеральные каналы
                        find_link_fed_chan = ::string_view(channel_line).starts_with("http://messi.tvfor.pro") << '\n'; // функция string_view вернет true, если найдено совпадение, и false - если совпадений нет
                        if (find_link_fed_chan > 0)
                            link_channel = channel_line;
                        else
                        {
                            if ((string_view(channel_line).starts_with("https://sitv.ru")) > 0 ||
                                (string_view(channel_line).starts_with("https://live-ugratv.cdnvideo.ru")) > 0) // функция string_view вернет true, если найдено совпадение, и false - если совпадений нет
                            {
                                link_channel = channel_line;
                            }
                        }

                        patt_line_smail_char = pattern_channel_line; // i-тый шаблон канало
                        channel_line_smail_char = channel_line; // i-тый канал или ссылка на него
                        // приводим шаблон и канал к нижнему регистру
                        transform(patt_line_smail_char.begin(), patt_line_smail_char.end(), patt_line_smail_char.begin(), tolower);
                        transform(channel_line_smail_char.begin(), channel_line_smail_char.end(), channel_line_smail_char.begin(), tolower);

                        string_view s_line_pattern(patt_line_smail_char);
                        string_view s_line_channel(channel_line_smail_char);

                        
                        // По шаблону ищем названия канала в конце строки
                        find_channel = ::string_view(s_line_channel).ends_with(s_line_pattern) << '\n'; // функция string_view вернет true, если найдено совпадение, и false - если совпадений нет

                        if (find_channel) {
                           ofstream file_out("C:\\Users\\Женя\\source\\repos\\NextPro\\x64\\\Debug\\sorted_list_channels.txt", ios::app); // открываем файл для записи
                           if (file_out.is_open())
                           {
                              // запись в файл и вывод на консоль
                              file_out << link_channel << endl;
                              cout << link_channel << endl;
                              file_out << channel_line << endl;
                              cout << channel_line << endl;
                            }
                            file_out.close(); // закрываем файл для записи
                        }
                    }
                    file_list_channel.close(); // закрываем файл list_channels.txt
                }
            }
            else {
                cout << "Не удается открыть файл list_channels.txt" << endl;
            }
        }
        file_template_channels.close(); // закрываем файл list_template_channels.txt
    }
    else {
        cout << "Не удается открыть файл list_template_channels.txt" << endl;
    }
}

int main()
{
    setlocale(0, "ru");
    
    main_channels_list();
    
    _getch();
    return 0; 
}
Женя32 вне форума Ответить с цитированием
Старый 05.07.2023, 11:55   #4
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

Используйте ::tolower
p51x вне форума Ответить с цитированием
Старый 05.07.2023, 12:15   #5
Женя32
Форумчанин
 
Регистрация: 12.09.2008
Сообщений: 621
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
Используйте ::tolower
Заработало!!!
Большое, большое спасибо!

Только одно не понятно, почему нужно прописывать абсолютный путь до файла?...
Женя32 вне форума Ответить с цитированием
Старый 05.07.2023, 20:03   #6
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,331
По умолчанию

Цитата:
Сообщение от Женя32 Посмотреть сообщение
Только одно не понятно, почему нужно прописывать абсолютный путь до файла?...
https://ru.wikipedia.org/wiki/Путь_к_файлу
waleri вне форума Ответить с цитированием
Старый 05.07.2023, 21:01   #7
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Цитата:
Сообщение от Женя32 Посмотреть сообщение
Только одно не понятно, почему нужно прописывать абсолютный путь до файла?...
Вам уже в прошлой теме говорили про рабочий каталог. Относительный путь указывается относительно рабочего каталога. Файлы у вас лежат в папке "\x64\Debug", а при запуске программы из студии рабочий каталог по умолчанию это корень проекта. 3 пути решения: положить файлы в корень проекта и указать соответствующие относительные пути; изменить рабочий каталог в свойствах проекта и указать соответствующие относительные пути; задавать абсолютные пути файлов как каталог исполняемого файла (но это платформозависимо) + имя файла.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме Ответить с цитированием
Старый 06.07.2023, 12:53   #8
Женя32
Форумчанин
 
Регистрация: 12.09.2008
Сообщений: 621
По умолчанию

Цитата:
Сообщение от BDA Посмотреть сообщение
Вам уже в прошлой теме говорили про рабочий каталог. Относительный путь указывается относительно рабочего каталога. Файлы у вас лежат в папке "\x64\Debug", а при запуске программы из студии рабочий каталог по умолчанию это корень проекта. 3 пути решения: положить файлы в корень проекта и указать соответствующие относительные пути; изменить рабочий каталог в свойствах проекта и указать соответствующие относительные пути; задавать абсолютные пути файлов как каталог исполняемого файла (но это платформозависимо) + имя файла.
Спасибо большое. Все заработало!
Женя32 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Необходимо написать "таймер", который будет запускаться при нажатии кнопки "Start", приостанавливаться на "Pause", и сбрасываться на "Reset" billiejean78 JavaScript, Ajax 1 03.09.2021 08:58
[РЕШЕНО] ошибка в цикле "repeat.until" Fatal: Syntax error, "UNTIL" expected but "(" found. sashakor22 Lazarus, Free Pascal, CodeTyphon 1 17.02.2019 15:25
Убрать папки "Pictures", "Music", "Видео", "Downloads" из "МОЙ КОМПЬЮТЕР" Бахтиёр1916 Windows 1 05.04.2017 12:53
Нужно пояснить/прокомментировать код программы, или коды функций "Добавить" "Удалить" "Обновить(редактировать" "Поиск" "Период") ZIRASS PHP 4 15.06.2016 14:23