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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Не могу убрать знак переноса строки http://www.cyberforum.ru/cpp-beginners/thread820484.html
Никак не получается убрать перенос строки. Помогите пожалуйста. Бьюсь уже несколько часов. #include <stdio.h> #include <stdlib.h> #include <Windows.h> #include <string.h> int main() {
C++ динамические массивы Здравствуйте, Посмотрите ,пожалуйста,задачу! Задание(общая схема алгоритма) 1.Запросить у пользователя... http://www.cyberforum.ru/cpp-beginners/thread820470.html
Сумма цифр дробной части C++
Всем привет! Весь день пытаюсь найти ошибку в своей программе. Задача вот такая: Найдите сумму первых трех цифр дробной части вещественного числа. Например, для числа 23,16809 она равна 15....
Проблемы с поисковиками. Помоготе пожалуйста C++
Здравствуйте уважаемые форумчане! Прошу помощи у Вас. Проблема не конкретно у меня а у знакомой. Она пользуется интернетом через модем МТС. Но проблема заключается в другом, она не может заходить в...
C++ класс prompt http://www.cyberforum.ru/cpp-beginners/thread820429.html
Создайте класс prompt. Для вывода на экран строки-приглашения включите в класс конструктор. Помимо строки-приглашения конструктор должен выполнить ввод набранного вами целого. Сохраните это значение...
C++ класс timer Создайте класс timer, определив в нем конструктор и деструктор. Объект класса timer предназначен для измерения временного интервала между его созданием и удалением. При вызове деструктора на экран... подробнее

Показать сообщение отдельно
Mr. Hat
2 / 2 / 0
Регистрация: 17.02.2012
Сообщений: 68

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

27.03.2013, 21:22. Просмотров 518. Ответов 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, но с этими преобразованиями вроде вообще не рекомендуется работать, если ты не пишешь драйвера для устройств. Есть какой-нибудь способ это сделать без того чтобы руками переписывать символы с одного места на другое?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru