在perl中,我可以这样做
if($str =~ s/a/b/) {
do something
}
在c ++中,我知道如何进行搜索/替换部分:
str = boost::regex_replace(str, boost::regex("a"), "b",
boost::match_default | boost::format_perl ) ;
我如何知道是否进行了更换?
我可以将旧值与新值进行比较。还有更好的方法吗?
答案 0 :(得分:1)
也许有更好的方法可以做到这一点,但我在documentation中看不出任何暗示。该函数似乎将输入格式化和/或复制到输出。所以直截了当的解决方案是这样的:
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()
来确切地告诉您匹配的内容,然后自己替换子字符串。