0

我正在编写一个 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;
}

它替换所有出现的strOldin strto strNew。我试图使用std::regexstd::regex_replace实现它。useRegex如果是真的,它会很好地工作。但是,如果useRegexfalse,我无法告诉他们这strOld只是一个普通字符串而不是正则表达式字符串。

例如,当我打电话时:

string output=Replace("hello.",".","?",false,true);

"??????"在我期望的时候返回"hello?"

4

1 回答 1

1

中途解决方案是预处理正则表达式并手动转义所有元字符。如果 C++11 中缺少此功能,这是最好的解决方案,从评论中听起来是这样。

于 2012-06-23T13:28:12.880 回答