當前位置: 首頁>>代碼示例>>C++>>正文


C++ XString::Find方法代碼示例

本文整理匯總了C++中XString::Find方法的典型用法代碼示例。如果您正苦於以下問題:C++ XString::Find方法的具體用法?C++ XString::Find怎麽用?C++ XString::Find使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在XString的用法示例。


在下文中一共展示了XString::Find方法的1個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的C++代碼示例。

示例1: InvokeCommand

/*
 *******************************************************************
 * Function: int DecodeAndSendCommand (XString commandString, char separator, const CKBehaviorContext& behaviorContext)
 *
 * Description :    Decodes the string message passed in into the separate parameters for the command and 
 *                  sets the output parameter valuess of the corresponding GBLWaitForCommand BB.
 *		
 * Paramters :
 *
 *    commandString     r   command string
 *    separator         r   parameter separator
 *    behaviorContext   r   behavior context    
 *
 * Returns : 
 *              0 on success, otherwise error
 *
 *******************************************************************
 */
int CGBLCommandController::InvokeCommand (XString commandString, const CKBehaviorContext& behaviorContext)
{
	int returnValue = 0; // 0 indicates success
	int separatorPos = 0; //position for string separator
	char separator = CGBLCommandController::commandSeparator;

	if (strlen (commandString.Str()) <=0)
	{
		returnValue = -1;
	}
    else
    {
	    separatorPos = commandString.Find(separator, separatorPos);
    	
	    int commandID = atoi ( (commandString.Substring (0, separatorPos)).Str() );

	    CKBehavior* targetBB = CGBLCommandController::GetTargetCommand (commandID, behaviorContext);

	    if (targetBB == NULL )
	    {
		    returnValue = -1;
	    }
		else if (! (targetBB->IsInputActive(0)) )
		{
			returnValue = -1;
		}
		else
        {
	        int argumentCount = targetBB->GetOutputParameterCount();

			int separatorCount = 0;
			for (unsigned int k=0; k < strlen (commandString.Str()); k++)
			{
				if (commandString.Str()[k] == separator)
				{
					separatorCount++;
				}
			}

			if ( separatorCount != (argumentCount + 1 ) )
			{
				returnValue = -1;
			}
			else
			{
				int prevPos = separatorPos+1;

				for(int i = 0; i < argumentCount ; i++)
				{
					separatorPos = commandString.Find(separator, prevPos);
					if (separatorPos == prevPos)
					{
						CKParameterOut* targetParam = targetBB->GetOutputParameter(i);
						targetParam->SetStringValue ("");
					}
					else
					{
						XString insert = (commandString.Substring (prevPos, separatorPos-prevPos)).Str();
						CKParameterOut* targetParam = targetBB->GetOutputParameter(i);
						targetParam->SetStringValue (insert.Str());
					}
					prevPos = separatorPos+1;
				}
				targetBB->ActivateOutput(0);
			}
        }
    }

    return returnValue;
}
開發者ID:gbaumgart,項目名稱:GBL_Backup,代碼行數:88,代碼來源:GBLCommandController.cpp


注:本文中的XString::Find方法示例由純淨天空整理自Github/MSDocs等開源代碼及文檔管理平台,相關代碼片段篩選自各路編程大神貢獻的開源項目,源碼版權歸原作者所有,傳播和使用請參考對應項目的License;未經允許,請勿轉載。