CUtlString CUtlString::Slice( int32 nStart, int32 nEnd ) const { int length = Length(); if ( length == 0 ) { return CUtlString(); } if ( nStart < 0 ) nStart = length - (-nStart % length); else if ( nStart >= length ) nStart = length; if ( nEnd == INT32_MAX ) nEnd = length; else if ( nEnd < 0 ) nEnd = length - (-nEnd % length); else if ( nEnd >= length ) nEnd = length; if ( nStart >= nEnd ) return CUtlString(); const char *pIn = String(); CUtlString ret; ret.SetDirect( pIn + nStart, nEnd - nStart ); return ret; }
CUtlString CUtlString::StripFilename() const { const char *pFilename = V_UnqualifiedFileName( Get() ); // NOTE: returns 'Get()' on failure, never NULL int nCharsToCopy = pFilename - Get(); CUtlString result; result.SetDirect( Get(), nCharsToCopy ); result.StripTrailingSlash(); return result; }