improved strstr/strrstr/stristr functions.

This commit is contained in:
HuYingzhuo(hugo/hyzboy) 2023-07-12 19:23:44 +08:00
parent dc0b3d4a6b
commit 75f30dc1b0

View File

@ -448,7 +448,7 @@ namespace hgl
* @return str2在str1中所在位置的指针 * @return str2在str1中所在位置的指针
*/ */
template<typename T1,typename T2> template<typename T1,typename T2>
T1 *strstr(T1 *str1,const uint size1,T2 *str2,const uint size2) T1 *strstr(T1 *str1,const uint size1,const T2 *str2,const uint size2)
{ {
if(!str1||!str2)return(nullptr); if(!str1||!str2)return(nullptr);
if(!*str1||!*str2)return(nullptr); if(!*str1||!*str2)return(nullptr);
@ -488,7 +488,7 @@ namespace hgl
* @return str2在str1中所在位置的指针 * @return str2在str1中所在位置的指针
*/ */
template<typename T1,typename T2> template<typename T1,typename T2>
T1 *strrstr(T1 *str1,const uint size1,T2 *str2,const uint size2) T1 *strrstr(T1 *str1,const uint size1,const T2 *str2,const uint size2)
{ {
if(!str1||!str2)return(nullptr); if(!str1||!str2)return(nullptr);
if(!*str1||!*str2)return(nullptr); if(!*str1||!*str2)return(nullptr);
@ -525,19 +525,20 @@ namespace hgl
* @param size2 str2的长度 * @param size2 str2的长度
* @return str2在str1中所在位置的指针 * @return str2在str1中所在位置的指针
*/ */
template<typename T> template<typename T1,typename T2>
T *stristr(T *str1,const uint size1,T *str2,const uint size2) T1 *stristr(T1 *str1,const uint size1,T2 *str2,const uint size2)
{ {
T *cp = (T *) str1; T1 *cp = (T1 *) str1;
T *s1, *s2; T1 *s1;
T2 *s2;
if ( !*str2) if ( !*str2)
return (T *)str1; return (T1 *)str1;
while (*cp) while (*cp)
{ {
s1 = cp; s1 = cp;
s2 = (T *) str2; s2 = (T2 *) str2;
while ( *s1 && *s2 ) while ( *s1 && *s2 )
{ {