Как получить строку с шаблоном из std :: regex в VC ++ 2010 - PullRequest
12 голосов
/ 21 декабря 2010

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

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

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

или использовать оператор << 100 * <p>cout << reg; напечатает pattern .

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

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

Ответы [ 2 ]

8 голосов
/ 21 декабря 2010

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

параграф 28.8 / 2 дает небольшое представление об этом:

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

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

4 голосов
/ 21 декабря 2010

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

...