Trevor Hickey Trevor Hickey - 25 days ago 9
C++ Question

How do you print a std::regex?

How do you print the string representation of a

std::regex
?

Say I have a collection of patterns, and I'd like to print the first one that matches:

std::vector<std::regex>> patterns = Get();
for (auto pattern: patterns){
if (std::regex_match("file.txt",pattern)){
std::cout << "matched on pattern: " << /* ? pattern ? */ << '\n';
}
}


std::cout
will not work on
std::regex
.

There doesn't seem to be any methods to get the string representation.

Are we expected to carry around a string separately, or am I missing something in the docs?

Answer

There doesn't seem to be any methods to get the string representation.

Correct. It is not even specified that the std::regex even saves your expression in the form you gave it, which might be the case if the implementation decides to use some more optimized format.