Подтвердить что ты не робот

Как получить строку с шаблоном из std:: regex в VС++ 2010

Можно ли получить строку с регулярным выражением от std::regex? Или я должен сохранить его в другом месте, если я захочу использовать его позже?

В boost вы можете сделать это:

boost::regex reg("pattern");
string p = reg.str();

или использовать < Оператор

cout << reg; напечатает шаблон.

но в std::regex нет str() или оператора <. Должен ли я сохранить мою строку в другом месте или я просто не могу ее найти?

В отладчике я вижу, что в std::regex.

4b9b3361

Ответ 1

Я только посмотрел в N3225, раздел 28.4 (заголовок <regex> синопсис), и действительно, шаблон basic_regex не имеет функции-члена str, и нет operator<<.

В пункте 28.8/2 содержится небольшое представление об этом:

Объекты специализации типов basic_regex отвечают за преобразуя последовательность charTобъект внутреннее представление. Не указано, какую форму это представления, и как это доступ к алгоритмам, которые работают регулярные выражения.

Я понимаю, что стандартный мандат basic_regex может быть построен из const charT *, но не требует, чтобы реализация сохраняла эту строку.

Ответ 2

Документы MSDN, похоже, показывают, что нет общедоступного способа извлечения шаблона регулярного выражения из построенного объекта, поэтому я бы сказал, что вы необходимо сохранить строку самостоятельно.