3

在 perl 中,我可以做到这一点

if($str =~ s/a/b/) {
  do something
}

在 C++ 中,我知道如何进行搜索/替换部分:

str = boost::regex_replace(str, boost::regex("a"), "b",  
                           boost::match_default | boost::format_perl ) ;

我怎么知道是否进行了更换?

我可以将旧值与新值进行比较。有没有更好的办法?

4

1 回答 1

1

也许有更好的方法可以做到这一点,但我在文档中看不到任何提示。该功能似乎将输入格式化和/或复制到输出。所以直接的解决方案是这样的:

std::string result = boost::regex_replace(str, boost::regex("a"), "b",
                                          boost::match_default | boost::format_perl);
if (result != str) {
    // Do something with "result".
}

但是,如果您觉得您需要一个非常有效的实现,您可以使用regex_match()它来准确地告诉您匹配的内容,然后自己替换子字符串。

于 2012-06-28T20:52:29.947 回答