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

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

Войти
Регистрация
Восстановить пароль
 
Mr. Hat
2 / 2 / 0
Регистрация: 17.02.2012
Сообщений: 68
#1

Компиляция шаблонов регулярных выражений (regex) - C++

27.03.2013, 21:22. Просмотров 482. Ответов 1
Метки нет (Все метки)

C++
1
2
3
4
5
6
7
8
9
10
#include<regex>
using namespace std;
 
int main() {
    const string Dbl_p="[\\+|-]?((\\d+\\.?\\d*)|(\\.\\d+))([e|E][\\+|-]?\\d+)?";
                    //шаблон для вещественных чисел
 
    string s=Dbl_p+Dbl_p+Dbl_p+Dbl_p+Dbl_p+Dbl_p+Dbl_p+Dbl_p;
    regex pat=regex(s);
}
При попытке на последней строчке создать объект regex возникает ошибка (std::tr1::regex_error at memory location 0x0034d068.. - конкретно она появляется в функции _Compile() где-то в глубинах стандартной библиотеки. То же самое происходит, если неправильно записать шаблон - лишнюю скобку поставить, к примеру). Если убрать хотя бы один "+Dbl_p", ошибка исчезает. От длины строки s ничего не зависит, в нее можно 500 символов записать, и все будет нормально работать. Может, там есть ограниение на сложность выражений? Я могу, конечно, разбивать выражения на более мелкие и усложнять код, но мне кажется, что у этой проблемы должно быть более красивое решение.

И еще вопрос: как, имея строку в стиле языка C типа const char*, получить строку типа char* с таким же содержанием? Просто функция из WinAPI требует параметр типа char* (хотя по идее эта функция не меняет содержимое строки), и приходится использовать преобразование const_cast, но с этими преобразованиями вроде вообще не рекомендуется работать, если ты не пишешь драйвера для устройств. Есть какой-нибудь способ это сделать без того чтобы руками переписывать символы с одного места на другое?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.03.2013, 21:22     Компиляция шаблонов регулярных выражений (regex)
Посмотрите здесь:

Запись выражений, ввод–вывод информацииЗапись выражений, ввод–вывод информации C++
C++ реализация регулярных циклов средствами языка С++
C++ std::regex и boost::regex
C++ regex
Regex в С++ C++
C++ Синтаксис регулярных выражений в C++
Синтаксис регулярных выражений C++
C++ Создание шаблонов C++
C++ Подсчитать количество регулярных слов
Организовать поиск по файлу с помощью регулярных выражений C++
C++ Достать из текста все совпадения с помощью регулярных выражений
Написать парсер математических выражений с функцией упрощения этих выражений C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Tulosba
:)
Эксперт С++
4390 / 3233 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
28.03.2013, 13:30     Компиляция шаблонов регулярных выражений (regex) #2
Цитата Сообщение от Mr. Hat Посмотреть сообщение
приходится использовать преобразование const_cast
Это нормальная практика для совместимости с кодом, который хочет получить параметр без const, несмотря на то, что параметр не модифицируется. Если есть подозрения на попытку модификации, то создайте копию исходной строки и передавайте ее.
Yandex
Объявления
28.03.2013, 13:30     Компиляция шаблонов регулярных выражений (regex)
Ответ Создать тему
Опции темы

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