本文整理汇总了C++中CStdString::rfind方法的典型用法代码示例。如果您正苦于以下问题:C++ CStdString::rfind方法的具体用法?C++ CStdString::rfind怎么用?C++ CStdString::rfind使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CStdString
的用法示例。
在下文中一共展示了CStdString::rfind方法的11个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: GetDocNum
CStdString OfflineDocIDResolver::GetDocNum( const CStdString& sDocID ) const
{
int iPosEnd = (x64_int_cast)sDocID.rfind(_T("/"));
int iPosStart = (x64_int_cast)sDocID.rfind(_T("/"), iPosEnd - 1);
return sDocID.Mid(iPosStart + 1, iPosEnd - (iPosStart + 1));
}
示例2: GetDocNumFromDocID
CStdString CIManTestUtils::GetDocNumFromDocID(CStdString sDocID)
{
int iSlash = (x64_int_cast)sDocID.rfind(_T('/'));
if(iSlash == -1)
return _T("");
sDocID.resize(iSlash);
iSlash = (x64_int_cast)sDocID.rfind(_T('/'));
if(iSlash == -1)
return _T("");
sDocID.erase(0, iSlash + 1);
return sDocID;
}
示例3: GenerateVersionDocID
CStdString OfflineDataStore::GenerateVersionDocID(const CStdString& sVersion, const CStdString& sDocID)
{
CStdString sTempID = _T("offline://") + sDocID;
CStdString sVersionID;
CStdString::size_type iFind = sTempID.rfind(_T('/'));
if(iFind != CStdString::npos )
{
sVersionID = sTempID.Mid(0, (iFind + 1));
}
sVersionID += sVersion;
return sVersionID;
}
示例4: GetDirectory
CStdString URIUtils::GetDirectory(const CStdString &strFilePath)
{
// Will from a full filename return the directory the file resides in.
// Keeps the final slash at end and possible |option=foo options.
size_t iPosSlash = strFilePath.find_last_of("/\\");
if (iPosSlash == string::npos)
return ""; // No slash, so no path (ignore any options)
size_t iPosBar = strFilePath.rfind('|');
if (iPosBar == string::npos)
return strFilePath.substr(0, iPosSlash + 1); // Only path
return strFilePath.substr(0, iPosSlash + 1) + strFilePath.substr(iPosBar); // Path + options
}
示例5: GetDirectoryHistoryString
/// \brief Build a directory history string
/// \param pItem Item to build the history string from
/// \param strHistoryString History string build as return value
void CGUIWindowFileManager::GetDirectoryHistoryString(const CFileItem* pItem, CStdString& strHistoryString)
{
if (pItem->m_bIsShareOrDrive)
{
// We are in the virtual directory
// History string of the DVD drive
// must be handel separately
if (pItem->m_iDriveType == CMediaSource::SOURCE_TYPE_DVD)
{
// Remove disc label from item label
// and use as history string, m_strPath
// can change for new discs
CStdString strLabel = pItem->GetLabel();
size_t nPosOpen = strLabel.find('(');
size_t nPosClose = strLabel.rfind(')');
if (nPosOpen != std::string::npos &&
nPosClose != std::string::npos &&
nPosClose > nPosOpen)
{
strLabel.erase(nPosOpen + 1, (nPosClose) - (nPosOpen + 1));
strHistoryString = strLabel;
}
else
strHistoryString = strLabel;
}
else
{
// Other items in virtual directory
strHistoryString = pItem->GetLabel() + pItem->GetPath();
URIUtils::RemoveSlashAtEnd(strHistoryString);
}
}
else
{
// Normal directory items
strHistoryString = pItem->GetPath();
URIUtils::RemoveSlashAtEnd(strHistoryString);
}
}
示例6: RemoveExtension
void URIUtils::RemoveExtension(CStdString& strFileName)
{
if(IsURL(strFileName))
{
CURL url(strFileName);
strFileName = url.GetFileName();
RemoveExtension(strFileName);
url.SetFileName(strFileName);
strFileName = url.Get();
return;
}
size_t iPos = strFileName.rfind('.');
// Extension found
if (iPos != std::string::npos)
{
CStdString strExtension = GetExtension(strFileName);
StringUtils::ToLower(strExtension);
strExtension += "|";
CStdString strFileMask;
strFileMask = g_advancedSettings.m_pictureExtensions;
strFileMask += "|" + g_advancedSettings.m_musicExtensions;
strFileMask += "|" + g_advancedSettings.m_videoExtensions;
strFileMask += "|" + g_advancedSettings.m_subtitlesExtensions;
#if defined(TARGET_DARWIN)
strFileMask += "|.py|.xml|.milk|.xpr|.xbt|.cdg|.app|.applescript|.workflow";
#else
strFileMask += "|.py|.xml|.milk|.xpr|.xbt|.cdg";
#endif
strFileMask += "|";
if (strFileMask.find(strExtension) != std::string::npos)
strFileName.erase(iPos);
}
}
示例7: sizeof
bool CWIN32Util::XBMCShellExecute(const CStdString &strPath, bool bWaitForScriptExit)
{
CStdString strCommand = strPath;
CStdString strExe = strPath;
CStdString strParams;
CStdString strWorkingDir;
StringUtils::Trim(strCommand);
if (strCommand.empty())
{
return false;
}
size_t iIndex = std::string::npos;
char split = ' ';
if (strCommand[0] == '\"')
{
split = '\"';
}
iIndex = strCommand.find(split, 1);
if (iIndex != std::string::npos)
{
strExe = strCommand.substr(0, iIndex + 1);
strParams = strCommand.substr(iIndex + 1);
}
StringUtils::Replace(strExe, "\"", "");
strWorkingDir = strExe;
iIndex = strWorkingDir.rfind('\\');
if(iIndex != std::string::npos)
{
strWorkingDir[iIndex+1] = '\0';
}
CStdStringW WstrExe, WstrParams, WstrWorkingDir;
g_charsetConverter.utf8ToW(strExe, WstrExe);
g_charsetConverter.utf8ToW(strParams, WstrParams);
g_charsetConverter.utf8ToW(strWorkingDir, WstrWorkingDir);
bool ret;
SHELLEXECUTEINFOW ShExecInfo = {0};
ShExecInfo.cbSize = sizeof(SHELLEXECUTEINFOW);
ShExecInfo.fMask = SEE_MASK_NOCLOSEPROCESS;
ShExecInfo.hwnd = NULL;
ShExecInfo.lpVerb = NULL;
ShExecInfo.lpFile = WstrExe.c_str();
ShExecInfo.lpParameters = WstrParams.c_str();
ShExecInfo.lpDirectory = WstrWorkingDir.c_str();
ShExecInfo.nShow = SW_SHOW;
ShExecInfo.hInstApp = NULL;
g_windowHelper.StopThread();
LockSetForegroundWindow(LSFW_UNLOCK);
ShowWindow(g_hWnd,SW_MINIMIZE);
ret = ShellExecuteExW(&ShExecInfo) == TRUE;
g_windowHelper.SetHANDLE(ShExecInfo.hProcess);
// ShellExecute doesn't return the window of the started process
// we need to gather it from somewhere to allow switch back to XBMC
// when a program is minimized instead of stopped.
//g_windowHelper.SetHWND(ShExecInfo.hwnd);
g_windowHelper.Create();
if(bWaitForScriptExit)
{
// Todo: Pause music and video playback
WaitForSingleObject(ShExecInfo.hProcess,INFINITE);
}
return ret;
}
示例8: GetParentPath
bool URIUtils::GetParentPath(const CStdString& strPath, CStdString& strParent)
{
strParent = "";
CURL url(strPath);
CStdString strFile = url.GetFileName();
if ( URIUtils::ProtocolHasParentInHostname(url.GetProtocol()) && strFile.empty())
{
strFile = url.GetHostName();
return GetParentPath(strFile, strParent);
}
else if (url.GetProtocol() == "stack")
{
CStackDirectory dir;
CFileItemList items;
dir.GetDirectory(url, items);
items[0]->m_strDVDLabel = GetDirectory(items[0]->GetPath());
if (StringUtils::StartsWithNoCase(items[0]->m_strDVDLabel, "rar://") || StringUtils::StartsWithNoCase(items[0]->m_strDVDLabel, "zip://"))
GetParentPath(items[0]->m_strDVDLabel, strParent);
else
strParent = items[0]->m_strDVDLabel;
for( int i=1;i<items.Size();++i)
{
items[i]->m_strDVDLabel = GetDirectory(items[i]->GetPath());
if (StringUtils::StartsWithNoCase(items[0]->m_strDVDLabel, "rar://") || StringUtils::StartsWithNoCase(items[0]->m_strDVDLabel, "zip://"))
items[i]->SetPath(GetParentPath(items[i]->m_strDVDLabel));
else
items[i]->SetPath(items[i]->m_strDVDLabel);
GetCommonPath(strParent,items[i]->GetPath());
}
return true;
}
else if (url.GetProtocol() == "multipath")
{
// get the parent path of the first item
return GetParentPath(CMultiPathDirectory::GetFirstPath(strPath), strParent);
}
else if (url.GetProtocol() == "plugin")
{
if (!url.GetOptions().empty())
{
url.SetOptions("");
strParent = url.Get();
return true;
}
if (!url.GetFileName().empty())
{
url.SetFileName("");
strParent = url.Get();
return true;
}
if (!url.GetHostName().empty())
{
url.SetHostName("");
strParent = url.Get();
return true;
}
return true; // already at root
}
else if (url.GetProtocol() == "special")
{
if (HasSlashAtEnd(strFile))
strFile.erase(strFile.size() - 1);
if(strFile.rfind('/') == std::string::npos)
return false;
}
else if (strFile.size() == 0)
{
if (url.GetHostName().size() > 0)
{
// we have an share with only server or workgroup name
// set hostname to "" and return true to get back to root
url.SetHostName("");
strParent = url.Get();
return true;
}
return false;
}
if (HasSlashAtEnd(strFile) )
{
strFile.erase(strFile.size() - 1);
}
size_t iPos = strFile.rfind('/');
#ifndef TARGET_POSIX
if (iPos == std::string::npos)
{
iPos = strFile.rfind('\\');
}
#endif
if (iPos == std::string::npos)
{
url.SetFileName("");
strParent = url.Get();
return true;
}
strFile.erase(iPos);
//.........这里部分代码省略.........
示例9: if
CStdString CPlayListM3U::GetBestBandwidthStream(const CStdString &strFileName, size_t bandwidth)
{
// we may be passed a playlist that does not contain playlists of different
// bitrates (eg: this playlist is really the HLS video). So, default the
// return to the filename so it can be played
char szLine[4096];
CStdString strLine;
CStdString strPlaylist = strFileName;
size_t maxBandwidth = 0;
// if we cannot get the last / we wont be able to determine the sub-playlists
size_t baseEnd = strPlaylist.rfind('/');
if (baseEnd == std::string::npos)
return strPlaylist;
// store the base path (the path without the filename)
CStdString basePath = strPlaylist.substr(0, baseEnd + 1);
// open the file, and if it fails, return
CFile file;
if (!file.Open(strFileName) )
{
file.Close();
return strPlaylist;
}
// convert bandwidth specified in kbps to bps used by the m3u8
bandwidth *= 1000;
while (file.ReadString(szLine, 1024))
{
// read and trim a line
strLine = szLine;
strLine.TrimRight(" \t\r\n");
strLine.TrimLeft(" \t");
// skip the first line
if (strLine == M3U_START_MARKER)
continue;
else if (strLine.Left(strlen(M3U_STREAM_MARKER)) == M3U_STREAM_MARKER)
{
// parse the line so we can pull out the bandwidth
std::map< CStdString, CStdString > params = ParseStreamLine(strLine);
std::map< CStdString, CStdString >::iterator it = params.find(M3U_BANDWIDTH_MARKER);
if (it != params.end())
{
size_t streamBandwidth = atoi(it->second.c_str());
if ((maxBandwidth < streamBandwidth) && (streamBandwidth <= bandwidth))
{
// read the next line
if (!file.ReadString(szLine, 1024))
continue;
strLine = szLine;
strLine.TrimRight(" \t\r\n");
strLine.TrimLeft(" \t");
// this line was empty
if (strLine.empty())
continue;
// store the max bandwidth
maxBandwidth = streamBandwidth;
// if the path is absolute just use it
if (CURL::IsFullPath(strLine))
strPlaylist = strLine;
else
strPlaylist = basePath + strLine;
}
}
}
}
CLog::Log(LOGINFO, "Auto-selecting %s based on configured bandwidth.", strPlaylist.c_str());
return strPlaylist;
}
示例10: RemoveVersionLabel
CStdString OfflineDataStore::RemoveVersionLabel( const CStdString& sDocID ) const
{
size_t iPos = sDocID.rfind(_T("/"));
return sDocID.Mid(0, iPos + 1);
}
示例11:
CStdString OfflineDocIDResolver::GetVersion( const CStdString& sDocID ) const
{
int iPos = (x64_int_cast)sDocID.rfind(_T("/"));
return sDocID.Mid(iPos + 1);
}