本文整理汇总了C++中scoped_ptr::group方法的典型用法代码示例。如果您正苦于以下问题:C++ scoped_ptr::group方法的具体用法?C++ scoped_ptr::group怎么用?C++ scoped_ptr::group使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类scoped_ptr
的用法示例。
在下文中一共展示了scoped_ptr::group方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: Match
bool Match(const string& input_string,
bool full_match,
string* matched_string) const {
if (!utf8_regexp_.get()) {
return false;
}
IcuRegExpInput input(input_string);
UErrorCode status = U_ZERO_ERROR;
const scoped_ptr<RegexMatcher> matcher(
utf8_regexp_->matcher(*input.Data(), status));
bool match_succeeded = full_match
? matcher->matches(input.position(), status)
: matcher->find(input.position(), status);
if (!match_succeeded || U_FAILURE(status)) {
return false;
}
if (matcher->groupCount() > 0 && matched_string) {
*matched_string = UnicodeStringToUtf8String(matcher->group(1, status));
}
return !U_FAILURE(status);
}
示例2: Consume
virtual bool Consume(RegExpInput* input_string,
bool anchor_at_start,
string* matched_string1,
string* matched_string2,
string* matched_string3) const {
DCHECK(input_string);
if (!utf8_regexp_.get()) {
return false;
}
IcuRegExpInput* const input = static_cast<IcuRegExpInput*>(input_string);
UErrorCode status = U_ZERO_ERROR;
const scoped_ptr<RegexMatcher> matcher(
utf8_regexp_->matcher(*input->Data(), status));
bool match_succeeded = anchor_at_start
? matcher->lookingAt(input->position(), status)
: matcher->find(input->position(), status);
if (!match_succeeded || U_FAILURE(status)) {
return false;
}
string* const matched_strings[] = {
matched_string1, matched_string2, matched_string3
};
// If less matches than expected - fail.
for (size_t i = 0; i < arraysize(matched_strings); ++i) {
if (matched_strings[i]) {
// Groups are counted from 1 rather than 0.
const int group_index = i + 1;
if (group_index > matcher->groupCount()) {
return false;
}
*matched_strings[i] =
UnicodeStringToUtf8String(matcher->group(group_index, status));
}
}
input->set_position(matcher->end(status));
return !U_FAILURE(status);
}