本文整理汇总了C++中CStdStringArray::begin方法的典型用法代码示例。如果您正苦于以下问题:C++ CStdStringArray::begin方法的具体用法?C++ CStdStringArray::begin怎么用?C++ CStdStringArray::begin使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CStdStringArray
的用法示例。
在下文中一共展示了CStdStringArray::begin方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: BuildPath
// Creates a musicdb url
CStdString CDirectoryNode::BuildPath() const
{
CStdStringArray array;
if (!m_strName.empty())
array.insert(array.begin(), m_strName);
CDirectoryNode* pParent=m_pParent;
while (pParent!=NULL)
{
const CStdString& strNodeName=pParent->GetName();
if (!strNodeName.empty())
array.insert(array.begin(), strNodeName);
pParent=pParent->GetParent();
}
CStdString strPath="musicdb://";
for (int i=0; i<(int)array.size(); ++i)
strPath+=array[i]+"/";
string options = m_options.GetOptionsString();
if (!options.empty())
strPath += "?" + options;
return strPath;
}
示例2: FormatParameter
CStdString CDatabaseQueryRule::FormatParameter(const CStdString &operatorString, const CStdString ¶m, const CDatabase &db, const CStdString &strType) const
{
CStdString parameter;
if (GetFieldType(m_field) == TEXTIN_FIELD)
{
CStdStringArray split;
StringUtils::SplitString(param, ",", split);
for (CStdStringArray::iterator itIn = split.begin(); itIn != split.end(); ++itIn)
{
if (!parameter.empty())
parameter += ",";
parameter += db.PrepareSQL("'%s'", StringUtils::Trim(*itIn).c_str());
}
parameter = " IN (" + parameter + ")";
}
else
parameter = db.PrepareSQL(operatorString.c_str(), ValidateParameter(param).c_str());
if (GetFieldType(m_field) == DATE_FIELD)
{
if (m_operator == OPERATOR_IN_THE_LAST || m_operator == OPERATOR_NOT_IN_THE_LAST)
{ // translate time period
CDateTime date=CDateTime::GetCurrentDateTime();
CDateTimeSpan span;
span.SetFromPeriod(param);
date-=span;
parameter = db.PrepareSQL(operatorString.c_str(), date.GetAsDBDate().c_str());
}
}
return parameter;
}
示例3: dcguard
std::vector<String> Dialog::browseMultiple(int type, const String& heading, const String& s_shares,
const String& mask, bool useThumbs,
bool useFileDirectories, const String& defaultt ) throw (WindowException)
{
DelayedCallGuard dcguard(languageHook);
VECSOURCES *shares = CMediaSourceSettings::Get().GetSources(s_shares);
CStdStringArray tmpret;
String lmask = mask;
if (!shares)
throw WindowException("Error: GetSourcesFromType given %s is NULL.",s_shares.c_str());
if (useFileDirectories && (!lmask.empty() && !(lmask.size() == 0)))
lmask += "|.rar|.zip";
if (type == 1)
CGUIDialogFileBrowser::ShowAndGetFileList(*shares, lmask, heading, tmpret, useThumbs, useFileDirectories);
else if (type == 2)
CGUIDialogFileBrowser::ShowAndGetImageList(*shares, heading, tmpret);
else
throw WindowException("Error: Cannot retreive multuple directories using browse %s is NULL.",s_shares.c_str());
std::vector<String> valuelist;
int index = 0;
for (CStdStringArray::iterator iter = tmpret.begin(); iter != tmpret.end(); iter++)
valuelist[index++] = (*iter);
return valuelist;
}
示例4: ParseURL
// Parses a given path and returns the current node of the path
CDirectoryNode* CDirectoryNode::ParseURL(const CStdString& strPath)
{
CURL url(strPath);
CStdString strDirectory=url.GetFileName();
URIUtils::RemoveSlashAtEnd(strDirectory);
CStdStringArray Path;
StringUtils::SplitString(strDirectory, "/", Path);
if (!strDirectory.empty())
Path.insert(Path.begin(), "");
CDirectoryNode* pNode=NULL;
CDirectoryNode* pParent=NULL;
NODE_TYPE NodeType=NODE_TYPE_ROOT;
for (int i=0; i<(int)Path.size(); ++i)
{
pNode=CDirectoryNode::CreateNode(NodeType, Path[i], pParent);
NodeType= pNode ? pNode->GetChildType() : NODE_TYPE_NONE;
pParent=pNode;
}
// Add all the additional URL options to the last node
if (pNode)
pNode->AddOptions(url.GetOptions());
return pNode;
}
示例5: JoinString
void StringUtils::JoinString(const CStdStringArray &strings, const CStdString& delimiter, CStdString& result)
{
result = "";
for(CStdStringArray::const_iterator it = strings.begin(); it != strings.end(); it++ )
result += (*it) + delimiter;
if(result != "")
result.Delete(result.size()-delimiter.size(), delimiter.size());
}
示例6: ContainsKeyword
bool StringUtils::ContainsKeyword(const CStdString &str, const CStdStringArray &keywords)
{
for (CStdStringArray::const_iterator it = keywords.begin(); it != keywords.end(); it++)
{
if (str.find(*it) != str.npos)
return true;
}
return false;
}
示例7: SettingOptionsRegionsFiller
void CLangInfo::SettingOptionsRegionsFiller(const CSetting *setting, std::vector< std::pair<std::string, std::string> > &list, std::string ¤t)
{
CStdStringArray regions;
g_langInfo.GetRegionNames(regions);
sort(regions.begin(), regions.end(), sortstringbyname());
for (unsigned int i = 0; i < regions.size(); ++i)
list.push_back(make_pair(regions[i], regions[i]));
}
示例8: BuildPath
// Creates a videodb url
CStdString CDirectoryNode::BuildPath() const
{
CStdStringArray array;
if (!m_strName.IsEmpty())
array.insert(array.begin(), m_strName);
CDirectoryNode* pParent=m_pParent;
while (pParent!=NULL)
{
const CStdString& strNodeName=pParent->GetName();
if (!strNodeName.IsEmpty())
array.insert(array.begin(), strNodeName);
pParent=pParent->GetParent();
}
CStdString strPath="videodb://";
for (int i=0; i<(int)array.size(); ++i)
strPath+=array[i]+"/";
return strPath;
}
示例9: FindBestMatch
int StringUtils::FindBestMatch(const CStdString &str, const CStdStringArray &strings, double &matchscore)
{
int best = -1;
matchscore = 0;
int i = 0;
for (CStdStringArray::const_iterator it = strings.begin(); it != strings.end(); it++, i++)
{
int maxlength = max(str.length(), it->length());
double score = StringUtils::CompareFuzzy(str, *it) / maxlength;
if (score > matchscore)
{
matchscore = score;
best = i;
}
}
return best;
}
示例10: GetCustomRegexps
void CAdvancedSettings::GetCustomRegexps(TiXmlElement *pRootElement, CStdStringArray& settings)
{
TiXmlElement *pElement = pRootElement;
while (pElement)
{
int iAction = 0; // overwrite
// for backward compatibility
const char* szAppend = pElement->Attribute("append");
if ((szAppend && stricmp(szAppend, "yes") == 0))
iAction = 1;
// action takes precedence if both attributes exist
const char* szAction = pElement->Attribute("action");
if (szAction)
{
iAction = 0; // overwrite
if (stricmp(szAction, "append") == 0)
iAction = 1; // append
else if (stricmp(szAction, "prepend") == 0)
iAction = 2; // prepend
}
if (iAction == 0)
settings.clear();
TiXmlNode* pRegExp = pElement->FirstChild("regexp");
int i = 0;
while (pRegExp)
{
if (pRegExp->FirstChild())
{
CStdString regExp = pRegExp->FirstChild()->Value();
regExp.MakeLower();
if (iAction == 2)
settings.insert(settings.begin() + i++, 1, regExp);
else
settings.push_back(regExp);
}
pRegExp = pRegExp->NextSibling("regexp");
}
pElement = pElement->NextSiblingElement(pRootElement->Value());
}
}
示例11: SettingOptionsRegionsFiller
void CLangInfo::SettingOptionsRegionsFiller(const CSetting *setting, std::vector< std::pair<std::string, std::string> > &list, std::string ¤t)
{
CStdStringArray regions;
g_langInfo.GetRegionNames(regions);
sort(regions.begin(), regions.end(), sortstringbyname());
bool match = false;
for (unsigned int i = 0; i < regions.size(); ++i)
{
CStdString region = regions[i];
list.push_back(make_pair(region, region));
if (!match && region.Equals(((CSettingString*)setting)->GetValue().c_str()))
{
match = true;
current = region;
}
}
if (!match && regions.size() > 0)
current = regions[0];
}
示例12: SplitPath
CStdStringArray URIUtils::SplitPath(const CStdString& strPath)
{
CURL url(strPath);
// silly CStdString can't take a char in the constructor
CStdString sep(1, url.GetDirectorySeparator());
// split the filename portion of the URL up into separate dirs
CStdStringArray dirs;
StringUtils::SplitString(url.GetFileName(), sep, dirs);
// we start with the root path
CStdString dir = url.GetWithoutFilename();
if (!dir.IsEmpty())
dirs.insert(dirs.begin(), dir);
// we don't need empty token on the end
if (dirs.size() > 1 && dirs.back().IsEmpty())
dirs.erase(dirs.end() - 1);
return dirs;
}
示例13: SelectAddonID
int CGUIWindowAddonBrowser::SelectAddonID(ADDON::TYPE type, CStdStringArray &addonIDs, bool showNone /*= false*/, bool multipleSelection /*= true*/)
{
CGUIDialogSelect *dialog = (CGUIDialogSelect*)g_windowManager.GetWindow(WINDOW_DIALOG_SELECT);
if (type == ADDON_UNKNOWN || !dialog)
return 0;
ADDON::VECADDONS addons;
if (type == ADDON_AUDIO)
CAddonsDirectory::GetScriptsAndPlugins("audio",addons);
else if (type == ADDON_EXECUTABLE)
CAddonsDirectory::GetScriptsAndPlugins("executable",addons);
else if (type == ADDON_IMAGE)
CAddonsDirectory::GetScriptsAndPlugins("image",addons);
else if (type == ADDON_VIDEO)
CAddonsDirectory::GetScriptsAndPlugins("video",addons);
else
CAddonMgr::Get().GetAddons(type, addons);
CFileItemList items;
for (ADDON::IVECADDONS i = addons.begin(); i != addons.end(); ++i)
items.Add(CAddonsDirectory::FileItemFromAddon(*i, ""));
dialog->SetHeading(TranslateType(type, true));
dialog->Reset();
dialog->SetUseDetails(true);
if (multipleSelection)
{
showNone = false;
dialog->EnableButton(true, 186);
}
else
dialog->EnableButton(true, 21452);
if (showNone)
{
CFileItemPtr item(new CFileItem("", false));
item->SetLabel(g_localizeStrings.Get(231));
item->SetLabel2(g_localizeStrings.Get(24040));
item->SetIconImage("DefaultAddonNone.png");
item->SetSpecialSort(SORT_ON_TOP);
items.Add(item);
}
items.Sort(SORT_METHOD_LABEL, SORT_ORDER_ASC);
if (addonIDs.size() > 0)
{
for (CStdStringArray::const_iterator it = addonIDs.begin(); it != addonIDs.end() ; it++)
{
CFileItemPtr item = items.Get(*it);
if (item)
item->Select(true);
}
}
dialog->SetItems(&items);
dialog->SetMultiSelection(multipleSelection);
dialog->DoModal();
if (!multipleSelection && dialog->IsButtonPressed())
{ // switch to the addons browser.
vector<CStdString> params;
params.push_back("addons://all/"+TranslateType(type,false)+"/");
params.push_back("return");
g_windowManager.ActivateWindow(WINDOW_ADDON_BROWSER, params);
return 2;
}
if (!multipleSelection && dialog->GetSelectedLabel() == -1)
return 0;
addonIDs.clear();
const CFileItemList& list = dialog->GetSelectedItems();
for (int i = 0 ; i < list.Size() ; i++)
addonIDs.push_back(list.Get(i)->GetPath());
return 1;
}
示例14: GetCustomRegexpReplacers
void CExternalPlayer::GetCustomRegexpReplacers(TiXmlElement *pRootElement,
CStdStringArray& settings)
{
int iAction = 0; // overwrite
// for backward compatibility
const char* szAppend = pRootElement->Attribute("append");
if ((szAppend && stricmp(szAppend, "yes") == 0))
iAction = 1;
// action takes precedence if both attributes exist
const char* szAction = pRootElement->Attribute("action");
if (szAction)
{
iAction = 0; // overwrite
if (stricmp(szAction, "append") == 0)
iAction = 1; // append
else if (stricmp(szAction, "prepend") == 0)
iAction = 2; // prepend
}
if (iAction == 0)
settings.clear();
TiXmlElement* pReplacer = pRootElement->FirstChildElement("replacer");
int i = 0;
while (pReplacer)
{
if (pReplacer->FirstChild())
{
const char* szGlobal = pReplacer->Attribute("global");
const char* szStop = pReplacer->Attribute("stop");
bool bGlobal = szGlobal && stricmp(szGlobal, "true") == 0;
bool bStop = szStop && stricmp(szStop, "true") == 0;
CStdString strMatch;
CStdString strPat;
CStdString strRep;
XMLUtils::GetString(pReplacer,"match",strMatch);
XMLUtils::GetString(pReplacer,"pat",strPat);
XMLUtils::GetString(pReplacer,"rep",strRep);
if (!strPat.IsEmpty() && !strRep.IsEmpty())
{
CLog::Log(LOGDEBUG," Registering replacer:");
CLog::Log(LOGDEBUG," Match:[%s] Pattern:[%s] Replacement:[%s]", strMatch.c_str(), strPat.c_str(), strRep.c_str());
CLog::Log(LOGDEBUG," Global:[%s] Stop:[%s]", bGlobal?"true":"false", bStop?"true":"false");
// keep literal commas since we use comma as a seperator
strMatch.Replace(",",",,");
strPat.Replace(",",",,");
strRep.Replace(",",",,");
CStdString strReplacer = strMatch + " , " + strPat + " , " + strRep + " , " + (bGlobal ? "g" : "") + (bStop ? "s" : "");
if (iAction == 2)
settings.insert(settings.begin() + i++, 1, strReplacer);
else
settings.push_back(strReplacer);
}
else
{
// error message about missing tag
if (strPat.IsEmpty())
CLog::Log(LOGERROR," Missing <Pat> tag");
else
CLog::Log(LOGERROR," Missing <Rep> tag");
}
}
pReplacer = pReplacer->NextSiblingElement("replacer");
}
}
示例15: FindModule
LibraryLoader* DllLoaderContainer::FindModule(const char* sName, const char* sCurrentDir, bool bLoadSymbols)
{
if (URIUtils::IsInArchive(sName))
{
CURL url(sName);
CStdString newName = "special://temp/";
newName += url.GetFileName();
CFile::Cache(sName, newName);
return FindModule(newName, sCurrentDir, bLoadSymbols);
}
if (CURL::IsFullPath(sName))
{ // Has a path, just try to load
return LoadDll(sName, bLoadSymbols);
}
#ifdef TARGET_POSIX
else if (strcmp(sName, "xbmc.so") == 0)
return LoadDll(sName, bLoadSymbols);
#endif
else if (sCurrentDir)
{ // in the path of the parent dll?
CStdString strPath=sCurrentDir;
strPath+=sName;
if (CFile::Exists(strPath))
return LoadDll(strPath.c_str(), bLoadSymbols);
}
// in environment variable?
CStdStringArray vecEnv;
#if defined(TARGET_ANDROID)
CStdString systemLibs = getenv("XBMC_ANDROID_SYSTEM_LIBS");
StringUtils::SplitString(systemLibs, ":", vecEnv);
CStdString localLibs = getenv("XBMC_ANDROID_LIBS");
vecEnv.insert(vecEnv.begin(),localLibs);
#else
StringUtils::SplitString(ENV_PATH, ";", vecEnv);
#endif
LibraryLoader* pDll = NULL;
for (int i=0; i<(int)vecEnv.size(); ++i)
{
CStdString strPath=vecEnv[i];
URIUtils::AddSlashAtEnd(strPath);
#ifdef LOGALL
CLog::Log(LOGDEBUG, "Searching for the dll %s in directory %s", sName, strPath.c_str());
#endif
strPath+=sName;
// Have we already loaded this dll
if ((pDll = GetModule(strPath.c_str())) != NULL)
return pDll;
if (CFile::Exists(strPath))
return LoadDll(strPath.c_str(), bLoadSymbols);
}
// can't find it in any of our paths - could be a system dll
if ((pDll = LoadDll(sName, bLoadSymbols)) != NULL)
return pDll;
CLog::Log(LOGDEBUG, "Dll %s was not found in path", sName);
return NULL;
}