我正在使用c ++函数来实现字符串替换。功能如下:
using namespace std;
string Replace(const string & str, const string & strOld,
const string & strNew, bool useRegex, bool caseSensitive)
{
regex::flag_type flag=regex::basic;
if(!caseSensitive)
flag |= regex::icase;
if(!useRegex)
// WHAT TO DO ?
std::regex rx(strOld,flag);
string output=regex_replace(str,rx,strNew);
return output;
}
它会将strOld
中str
的所有strNew
替换为std::regex
。我尝试使用std::regex_replace
和useRegex
来实现它。如果useRegex
为真,它的效果很好。但是,如果false
为strOld
,我无法告诉他们string output=Replace("hello.",".","?",false,true);
只是一个纯字符串而不是正则表达式字符串。
例如,当我打电话时:
"??????"
它会返回"hello?"
,而我希望它为{{1}}。
答案 0 :(得分:1)
中途解决方案是预处理正则表达式并手动转义所有元字符。如果C ++ 11中缺少此功能,那么这是最好的解决方案,而这些功能来自于评论听起来像是。