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

boost regex_match - Баг? - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 1, средняя оценка - 5.00
gromo
 Аватар для gromo
366 / 265 / 24
Регистрация: 04.09.2009
Сообщений: 1,214
08.01.2014, 00:36     boost regex_match - Баг? #1
Снова неразрешимая проблема (
По документации, функции поиска regex_match/regex_search должны заполнять (делать не пустым) объект с результатами поиска, только если находят все/часть регулярного выражения в строке.

В этом коде ну никак не может совпадать ни часть, ни все регулярное выражение. Но объект what на выходе НЕ пустой.

C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <boost/regex.hpp>
#include <iostream>
int main()  {
    using namespace std;
    using namespace boost;  cout << boolalpha;
    string s("###");
    regex e(R"_([[:alnum:]]+\.[[:alnum:]]+)_", regex_constants::extended);
    smatch what;
    cout << "Default constructed: " << what.empty() << endl;
 
    if ( regex_match(s.cbegin(), s.cend(), what, e) )
        cout <<"With regex_match: " << what.empty() << endl;
 
    cout <<"After regex_match: " << what.empty() << endl;
    return 0;
}
Вывод:
Код
 
Default constructed: true
After regex_match: false
Как видно, ветка if даже не выполнялась (что верно), но объект what модифицировался.
ЧЯДНТ?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.01.2014, 00:36     boost regex_match - Баг?
Посмотрите здесь:

C++ Небольшой баг
Баг компилятора? C++
C++ std::regex : баг на сайте или баг компилятора?
C++ boost и Multithreading
Баг в программе C++
C++ Баг в программе
C++ Boost::async
Boost::programm_options C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
DiffEreD
 Аватар для DiffEreD
1420 / 757 / 95
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
08.01.2014, 00:45     boost regex_match - Баг? #2
Вроде все так как и в документации написано о boost::regex_match:
Postconditions: If the function returns false, then the effect on parameter m is undefined, otherwise the effects on parameter m are given in the table:
m.empty() _ false
...
gromo
 Аватар для gromo
366 / 265 / 24
Регистрация: 04.09.2009
Сообщений: 1,214
08.01.2014, 00:53  [ТС]     boost regex_match - Баг? #3
DiffEreD, проглядел
Yandex
Объявления
08.01.2014, 00:53     boost regex_match - Баг?
Ответ Создать тему
Опции темы

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