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

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

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

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

27.03.2013, 21:22. Просмотров 496. Ответов 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++
Здравствуйте. Правильно ли написано выражение в данном случае? Работает не совсем корректно. #include &quot;stdafx.h&quot; #include &lt;regex&gt; ...

Синтаксис регулярных выражений в C++ - C++
Помогите пожалуйста.... Исходный текст - &quot;Miguel_Rivero: {FFCD00}текст&quot; преобразуется в - &quot;тест 10&quot; засчет обрабочика: ...

Организовать поиск по файлу с помощью регулярных выражений - C++
Как организовать поиск по файлу с помощью регулярных выражений? Подскажите хорошую статью.

Раздельная компиляция шаблонов классов - C++
При разделении шаблона класса на .h и .cpp линковщик ругается. Неужели в C++17 ещё не пофиксили это недоразумение и придётся писать всё в...

Достать из текста все совпадения с помощью регулярных выражений - C++
Здравствуйте помогите решить задачу. Есть текст : Set: wer=b5b0231b05825d0001; expires=Wed, 02 Aug 2017 10:23:00 GMT; Set:...

Подсчитать количество регулярных слов - C++
Подсчитать количество регулярных слов. Напечатать в перевернутом виде все слова, которые содержат два экземпляра заданного символа.

реализация регулярных циклов средствами языка С++ - C++
Не могу справится с заданием помогите пожалуйста и объясните,как работает))

Regex в С++ - C++
Здравствуйте! Я хочу найти все вхождения подстроки типа 1+1 в строку. std::string str = &quot;0011011000001&quot;; std::regex rx (&quot;1+1&quot;); ...

regex - C++
как через регулярки подсчитать количество слов в стоке??? я пробовал так: #include &lt;iterator&gt; #include &lt;iostream&gt; #include &lt;string&gt;...

С++, создание шаблонов - C++
Задание по C++ - создание шаблонов, помогите! Создать шаблон некоторого целевого класса А, возможно, реализованный с применением...

Создание шаблонов C++ - C++
Помогите создать шаблон пожалуйста или может быть у кого нибудь уже есть данные программы. Задание 1: Работа с одномерными массивами....

запрет шаблонов - C++
У меня есть некоторая шаблонная функция, которая определена для некоторого набора типов данныхх. Как можно сделать так, чтобы функцию...


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

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

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