Сообщение от
Roger571
Просто для себя понять почему вот так случается
Мне кажется, что проблема заключается в том, что std::string sString был инициализирован с помощью конструктора копирования, и его цикл жизни был только в пределеах функции easyRegex().
Операция regex_search была выполнена над строкой, которая, по сути, не имеет ничего общего с sTest (незавимая копия), но к ее элементам все равно хотят достучаться в тот момент, когда их существование явно не гарантировано.
К слову говоря, полученый результат мог бы быть и другим. Точнее, здесь все аналогично тому, как пытаться получить доступ к данным, расположеным в освобожденной памяти - иногда это, возможно, и работает.
В общем, вот этот вектор
boostorg/regex(https://github.com/boostorg/regex/blob/5d990fd751a8c149dd47fbaf24eaaffd1bde3bd5/include/boost/regex/v4/match_results.hpp#L577) в результате и ломается
Подводя итоги, следует передать строку тоже по ссылке bool easyRegex(std::string& sString, ... etc ...
Сообщение от
SR_team
Бери STL
Так в STL часто переносят то, что хорошо показало себя в boost (конечно с фиксами всякими (напр. filesystem)).