I'm trying to change user input in wildcard form ("*word*")
to a regular expression format. To that end, I'm using the code below to strip off the '*'
at the beginning and end of the input so that I can add the regular expression characters on either end:
string::iterator iter_begin = expressionBuilder.begin();
string::iterator iter_end = expressionBuilder.end();
iter_end--;
if ((char)*iter_begin == '*' && (char)*iter_end == '*')
{
expressionBuilder.erase(iter_begin);
expressionBuilder.erase(iter_end);
expressionBuilder = "\\b\\w*" + expressionBuilder + "\\w*\\b";
}
However, the call to "expressionBuilder.erase(iter_end)"
does not erase the trailing '*'
from the input string so I wind up with an incorrect regular expression. What am I doing wrong here? "(char)*iter_end == '*'"
must be true for the code inside the if statment to run (which it does), so why doesn't the same iterator work when passed to erase()?