Как указать} (Закрытие скобки) в форсированном регулярном выражении?

Я использую boost 1.54 в моей программе. Моя задача - расширить некоторые шаблоны в строке.

Один из таких экземпляров заключается в том, что если в строке найдена закрывающая скобка } замените ее на >

В моем коде я написал следующее регулярное выражение.

boost::wregex rightbrace(L"\}"); // replace this by >

strText = boost::regex_replace(strText, rightbrace, L">");

Мой код отлично компилируется. Но моя программа выходит из строя, когда она встречает первый оператор, который он выдает со следующим исключением

Необработанное исключение в 0x7599c41f в Compress.exe: исключение Microsoft C++: boost :: exception_detail :: clone_impl> @0x0018fa54

Так как } - специальный символ, я убежал от него символом \.

Может ли кто-нибудь сказать мне, в чем проблема?

1 ответ

Вы ускользнули от } для повышения, но вам также нужно избегать символа \ escape для компилятора.

boost::wregex rightbrace(L"\\}");

licensed under cc by-sa 3.0 with attribution.