当前位置: 首页>>代码示例>>C++>>正文


C++ MatchResult类代码示例

本文整理汇总了C++中MatchResult的典型用法代码示例。如果您正苦于以下问题:C++ MatchResult类的具体用法?C++ MatchResult怎么用?C++ MatchResult使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。


在下文中一共展示了MatchResult类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: SearchKeysInFile

// 仅用来搜索关键字,结果保存在char* resultFile中
void SearchKeysInFile(const char* file,const char * keys,const char * resultFile)
{
	// text
	//char * text = "12.5, a1.1, 0.123, 178";

	// declare
	//static CRegexpT <char> regexp("\\b\\d+\\.\\d+");
	//char * key=m_Keyword.GetBuffer();
	static CRegexpT <char> regexp(keys);
	CContext * pContext;

	//读文件,分块查找
	std::ifstream ifs;
	ifs.open(file,ifstream::binary);
	ifs.seekg(0,ifstream::beg);

	std::ofstream ofs;
	ofs.open(resultFile,ofstream::binary);
	ofs.clear();
	//ofs.seekg(0,ofstream::beg);

	char * pBuffer=new char[BLOCK_SIZE];
	while(!ifs.eof())
	{
		ifs.read(pBuffer,BLOCK_SIZE);

		//////////////////////////////////////////////////////////////////////////
		//分块查找

		// prepare
		pContext= regexp.PrepareMatch(pBuffer);

		// loop
		MatchResult result = regexp.Match(pContext);

		while( result.IsMatched() )
		{
			// 写入结果文件
			//	printf("%.*s\n", result.GetEnd() - result.GetStart(), pBuffer + result.GetStart());
			
			// 先转换,再写入
			ofs.write(pBuffer + result.GetStart(),result.GetEnd() - result.GetStart());
			ofs<<endl;
			ofs<<"——————————————————————"<<endl;
			// get next
			result = regexp.Match(pContext);
		}
	}

	// 搜索成功结束
	ifs.close();
	ofs.close();
	

	// release
	regexp.ReleaseContext(pContext);

	delete[] pBuffer;

}
开发者ID:ray123fly,项目名称:Master-Design,代码行数:61,代码来源:Search.cpp

示例2: endMatch

/**
 * Method handling the end of a match
 * @return MatchResult : result of the match 
 */
void Championship::endMatch(MatchResult & result)
{
	// erase schedule
	for(size_t i = 0;i<_schedules.size();++i){
		if(_schedules[i].user1 == result.getWinner() || _schedules[i].user2 == result.getWinner()){
			_schedules.erase(_schedules.begin()+i);
		}
	}
	// erase loser
	for(size_t i =0;i<_users.size();++i){
		if(_users[i] == result.getLoser()){
			_users.erase(_users.begin()+i);
		}
	}
	// check if championship ended
	if(_users.size() == 1){
		_isEnded = true;
	}
	// check if turn ended
	else if(_users.size() == _nbOfUsers/(2<<(_turn-1))) { //or _schedules.empty() but less safe
		_turnsResult.push_back(_users);
		++_turn;
		time_t currentTime = time(NULL);
		struct tm* date = localtime(&currentTime);
		date->tm_min +=1;
		time_t begin = mktime(date);
		for (size_t i = 0; i < _users.size(); i+=2){
			_schedules.push_back(Schedule(_users[i], _users[i+1], begin));
		}
		MemoryAccess::save(*this);
	}
}
开发者ID:dilo00o,项目名称:ProQuidditchManager,代码行数:36,代码来源:Championship.cpp

示例3: TEST_F

TEST_F(MatchResultTest, AuthorRulesMultipleScopes)
{
    const StylePropertySet* authorSets[] = { propertySet(0), propertySet(1), propertySet(2), propertySet(3) };

    MatchResult result;

    result.finishAddingUARules();

    result.addMatchedProperties(authorSets[0]);
    result.addMatchedProperties(authorSets[1]);
    result.finishAddingAuthorRulesForTreeScope();

    result.addMatchedProperties(authorSets[2]);
    result.addMatchedProperties(authorSets[3]);
    result.finishAddingAuthorRulesForTreeScope();

    testMatchedPropertiesRange(result.allRules(), 4, authorSets);
    testMatchedPropertiesRange(result.uaRules(), 0, nullptr);
    testMatchedPropertiesRange(result.authorRules(), 4, authorSets);

    ImportantAuthorRanges important(result);

    auto iter = important.begin();
    EXPECT_NE(important.end(), iter);
    testMatchedPropertiesRange(*iter, 2, &authorSets[2]);

    ++iter;
    EXPECT_NE(important.end(), iter);
    testMatchedPropertiesRange(*iter, 2, authorSets);

    ++iter;
    EXPECT_EQ(important.end(), iter);
}
开发者ID:azureplus,项目名称:chromium,代码行数:33,代码来源:MatchResultTest.cpp

示例4: stepMatches

MatchResult StepManager::stepMatches(const std::string &stepDescription) {
    MatchResult matchResult;
    for (steps_type::iterator iter = steps().begin(); iter != steps().end(); ++iter) {
        StepInfo *stepInfo = iter->second;
        SingleStepMatch currentMatch = stepInfo->matches(stepDescription);
        if (currentMatch) {
            matchResult.addMatch(currentMatch);
        }
    }
    return matchResult;
}
开发者ID:barneywilliams,项目名称:cukebins,代码行数:11,代码来源:StepManager.cpp

示例5: test_all_number

int test_all_number( const char *string )
{
	//declare
	static CRegexpT <char> regexp("\\d+");
	
	//test
	MatchResult result = regexp.MatchExact( string );

	//matched or not 
	return result.IsMatched();
}
开发者ID:huiliu,项目名称:c.learning.hui,代码行数:11,代码来源:regular.c

示例6:

bool Foam::regExp::match(const std::string& str) const
{
    bool isExactMatch = false;


    if (preg_ && !str.empty())
    {
        const MatchResult result = preg_->MatchExact(str.c_str());
        isExactMatch = (0 < result.IsMatched());
    }

    return isExactMatch;
}
开发者ID:kempj,项目名称:OpenFOAM-win,代码行数:13,代码来源:regExp.C

示例7: regexp

CString CCommands::XApplicationEvents::ReplaceRegexpData( IN CString Data, IN LPCTSTR lpRegexp, IN DWORD dwRegexpType, IN LPCTSTR lpRegexpReplace )
{
	CRegexpT <TCHAR> regexp(lpRegexp, dwRegexpType);
	CString strRetData;
	MatchResult result = regexp.Match(Data);
	if (result.IsMatched())
	{
		TCHAR * cReplace = regexp.Replace(Data, lpRegexpReplace);
		strRetData = cReplace;
		regexp.ReleaseString(cReplace);
	}

	return strRetData;
}
开发者ID:daiybh,项目名称:UpdateVersion,代码行数:14,代码来源:Commands.cpp

示例8: while

typename Dictionary<Entry>::MatchResult Dictionary<Entry>::match( const KyteaString & chars ) const {
    const unsigned len = chars.length();
    unsigned currState = 0, nextState;
    MatchResult ret;
    for(unsigned i = 0; i < len; i++) {
        KyteaChar c = chars[i];
        while((nextState = states_[currState]->step(c)) == 0 && currState != 0)
            currState = states_[currState]->failure;
        currState = nextState;
        std::vector<unsigned> & output = states_[currState]->output;
        for(unsigned j = 0; j < output.size(); j++) 
            ret.push_back( std::pair<unsigned, Entry*>(i, entries_[output[j]]) );
    }
    return ret;
}
开发者ID:XLPE,项目名称:kytea,代码行数:15,代码来源:dictionary.cpp

示例9: mapResultValue

void TestPatternMatcherContext::joinResult( MatchResult& result, unsigned int id, const MatchResult& aresult)
{
	if (!result.defined())
	{
		result.ordpos = aresult.ordpos;
		result.ordlen = aresult.ordlen;
		result.start = aresult.start;
		result.end = aresult.end;
	}
	else
	{
		if (aresult.ordpos + aresult.ordlen >  result.ordpos + result.ordlen)
		{
			result.ordlen = aresult.ordpos + aresult.ordlen - result.ordpos;
		}
		if (aresult.start < result.start)
		{
			result.start = aresult.start;
		}
		if (aresult.end > result.end)
		{
			result.end = aresult.end;
		}
	}
	const char* variable = m_instance->getVariableAttached( id);
	if (variable)
	{
		std::string value = mapResultValue( id, aresult);
		result.items.push_back( new MatchResult( variable, value, aresult.ordpos, aresult.ordlen, aresult.start, aresult.end));
	}
	else
	{
		result.items.insert( result.items.end(), aresult.items.begin(), aresult.items.end());
	}
}
开发者ID:patrickfrey,项目名称:strusAnalyzer,代码行数:35,代码来源:patternMatcher.cpp

示例10: critical

int Specialization::substituteConstArrayIndexExprsWithConst(VariableIdMapping* variableIdMapping, ExprAnalyzer* exprAnalyzer, const EState* estate, SgNode* root) {
  typedef pair<SgExpression*,int> SubstitutionPair;
  typedef list<SubstitutionPair > SubstitutionList;
  SubstitutionList substitutionList;
  AstMatching m;
  MatchResult res;
  int numConstExprElim=0;
#pragma omp critical(EXPRSUBSTITUTION)
  {
    res=m.performMatching("SgPntrArrRefExp(_,$ArrayIndexExpr)",root);
  }
  if(res.size()>0) {
     for(MatchResult::iterator i=res.begin();i!=res.end();++i) {
         // match found
       SgExpression* arrayIndexExpr=isSgExpression((*i)["$ArrayIndexExpr"]);
       if(arrayIndexExpr) {
         // avoid substituting a constant by a constant
         if(!isSgIntVal(arrayIndexExpr)) {
           list<SingleEvalResultConstInt> evalResultList=exprAnalyzer->evalConstInt(arrayIndexExpr,*estate,true, true);
           // only when we get exactly one result it is considered for substitution
           // there can be multiple const-results which do not allow to replace it with a single const
           if(evalResultList.size()==1) {
             list<SingleEvalResultConstInt>::iterator i=evalResultList.begin();
             ROSE_ASSERT(evalResultList.size()==1);
             AValue varVal=(*i).value();
             if(varVal.isConstInt()) {
               int varIntValue=varVal.getIntValue();
               //cout<<"INFO: const: "<<varIntValue<<" substituting: "<<arrayIndexExpr->unparseToString()<<endl;
               SgNodeHelper::replaceExpression(arrayIndexExpr,SageBuilder::buildIntVal(varIntValue),false);
               numConstExprElim++;
             }
           }
         }
       }
     }
   }
   return numConstExprElim;
 }
开发者ID:InstRO,项目名称:InstRO-ROSE-edg4x,代码行数:38,代码来源:Specialization.C

示例11: TEST_F

TEST_F(MatchResultTest, UARulesAndAuthorRulesMultipleScopes) {
  const StylePropertySet* allSets[] = {propertySet(0), propertySet(1),
                                       propertySet(2), propertySet(3),
                                       propertySet(4), propertySet(5)};
  const StylePropertySet** uaSets = &allSets[0];
  const StylePropertySet** authorSets = &allSets[2];

  MatchResult result;

  result.addMatchedProperties(uaSets[0]);
  result.addMatchedProperties(uaSets[1]);
  result.finishAddingUARules();

  result.addMatchedProperties(authorSets[0]);
  result.addMatchedProperties(authorSets[1]);
  result.finishAddingAuthorRulesForTreeScope();

  result.addMatchedProperties(authorSets[2]);
  result.addMatchedProperties(authorSets[3]);
  result.finishAddingAuthorRulesForTreeScope();

  testMatchedPropertiesRange(result.allRules(), 6, allSets);
  testMatchedPropertiesRange(result.uaRules(), 2, uaSets);
  testMatchedPropertiesRange(result.authorRules(), 4, authorSets);

  ImportantAuthorRanges important(result);

  ImportantAuthorRangeIterator iter = important.begin();
  EXPECT_NE(important.end(), iter);
  testMatchedPropertiesRange(*iter, 2, &authorSets[2]);

  ++iter;
  EXPECT_NE(important.end(), iter);
  testMatchedPropertiesRange(*iter, 2, authorSets);

  ++iter;
  EXPECT_EQ(important.end(), iter);
}
开发者ID:mirror,项目名称:chromium,代码行数:38,代码来源:MatchResultTest.cpp

示例12: Str_RegExMatch

int Str_RegExMatch( LPCTSTR pPattern, LPCTSTR pText, TCHAR * lastError )
{
	try
	{
		CRegexp expressionformatch(pPattern, NO_FLAG);
		MatchResult result = expressionformatch.Match(pText);
		if( result.IsMatched() )
			return 1;

		return 0;
	}
	catch (std::bad_alloc e)
	{
		strcpylen(lastError,e.what(),SCRIPT_MAX_LINE_LEN);
		CurrentProfileData.Count(PROFILE_STAT_FAULTS, 1);
		return -1;
	}
	catch ( ... )
	{
		strcpylen(lastError,"Unknown",SCRIPT_MAX_LINE_LEN);
		CurrentProfileData.Count(PROFILE_STAT_FAULTS, 1);
		return -1;
	}
}
开发者ID:roberpot,项目名称:Source,代码行数:24,代码来源:CString.cpp

示例13: Matches

Pattern* XRefDef::Matches(PatternList* list, const char* s, const char** start, int32* len) {
	MatchResult m;
	const int32 n = list->CountItems();
	Pattern* pat = NULL;
	for (int32 i = 0; i < n; i++) {
		Pattern* p = list->ItemAt(i);

		if (p->Matches(s, &m) && m.CountResults() >= 1) {
			if (m.Start(0) <= s) {
				if (m.Start(0) == s && m.Length(0) <= *len) continue;
				pat    = p;
				*start = m.Start(0);
				*len   = m.Length(0);
			}
		}
	}
	return pat;
}
开发者ID:AmirAbrams,项目名称:haiku,代码行数:18,代码来源:XReferences.cpp

示例14: success_response

mValue StepMatchesCommand::formatResponse(MatchResult matchResult) {
    mValue response = success_response();
    mArray matches;
    MatchResult::match_results_type resultSet = matchResult.getResultSet();
    for (MatchResult::match_results_type::iterator i = resultSet.begin(); i != resultSet.end(); ++i) {
        mObject match;
        const StepInfo *stepInfo = i->stepInfo;
        match.insert(make_pair("id", mValue(toString(stepInfo->id))));
        mArray matchArgs;
        for (SingleStepMatch::submatches_type::iterator j = i->submatches.begin(); j != i->submatches.end(); ++j) {
            mObject arg;
            arg.insert(make_pair("val", mValue(j->value)));
            arg.insert(make_pair("pos", mValue(j->position)));
            matchArgs.push_back(arg);
        }
        match.insert(make_pair("args", mValue(matchArgs)));
        match.insert(make_pair("source", mValue(stepInfo->source)));
        matches.push_back(match);
    }
    response.get_array().push_back(matches);
    return response;
}
开发者ID:barneywilliams,项目名称:cukebins,代码行数:22,代码来源:WireProtocol.hpp

示例15: main

int main(int argc, char * argv[])
{
	std::ifstream fs("C:\\Lookup\\112.127.141.86.html");
	std::string in;
	load_file(in, fs);
	fs.close();
	//static CRegexpT <char> regexp1("\\d+");
	static CRegexpT <char> regexp1("target=\\\"_blank\\\"\\>(.+?)\\</a\\>\\</td\\>");
	// loop
	MatchResult result1 = regexp1.Match(in.c_str());

	while( result1.IsMatched() )
	{  
		//GetEnd匹配成功后,获取所匹配到的子字符串的结束位置。如果匹配失败,则返回负值。
		//GetStart匹配成功后,获取所匹配到的子字符串的开始位置。如果匹配失败,则返回负值。
		printf("%.*s\n", result1.GetEnd() - result1.GetStart(), in.c_str() + result1.GetStart());
		// get next
		result1 = regexp1.Match(in.c_str(), result1.GetEnd());  //返回匹配结果 MatchResult 对象。
		// 通过 MatchResult 对象,可以得知是否匹配成功。如果成功,通过 MatchResult 对象可以获取捕获信息。

	}

	// text
	char * text = "http://www.cppprog.com/2009/0112/48.html";
	// declare
	static CRegexpT <char> regexp("\\d+");
	// loop
	MatchResult result = regexp.Match(text);
	//IsMatched返回非零值表示匹配成功,返回 0 表示匹配失败。
	while( result.IsMatched() )
	{  
		//GetEnd匹配成功后,获取所匹配到的子字符串的结束位置。如果匹配失败,则返回负值。
		//GetStart匹配成功后,获取所匹配到的子字符串的开始位置。如果匹配失败,则返回负值。
		printf("%.*s\n", result.GetEnd() - result.GetStart(), text + result.GetStart());
		// get next
		result = regexp.Match(text, result.GetEnd());  //返回匹配结果 MatchResult 对象。
		// 通过 MatchResult 对象,可以得知是否匹配成功。如果成功,通过 MatchResult 对象可以获取捕获信息。

	}
	return 0;
}
开发者ID:KnowNo,项目名称:test-code-backup,代码行数:41,代码来源:test.cpp


注:本文中的MatchResult类示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。