【发布时间】:2008-10-23 19:38:13
【问题描述】:
我正在尝试将通配符形式 ("*word*") 的用户输入更改为正则表达式格式。为此,我使用下面的代码在输入的开头和结尾去掉'*',以便我可以在任一端添加正则表达式字符:
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";
}
但是,对"expressionBuilder.erase(iter_end)" 的调用确实不会从输入字符串中删除尾随'*',因此我得到了一个不正确的正则表达式。我在这里做错了什么? "(char)*iter_end == '*'" 必须为 true 才能运行 if 语句中的代码(它确实如此),那么为什么传递给 erase() 时相同的迭代器不能工作?
【问题讨论】: