首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

TCHAR字符串觅子串 有能直接用的函数吗

2014-01-09 
TCHAR字符串找子串 有能直接用的函数吗有两个字符串 都是TCHAR path[MAX_PATH],比如第一个串是E:\folder\

TCHAR字符串找子串 有能直接用的函数吗
有两个字符串 都是TCHAR path[MAX_PATH],
比如第一个串是"E:\folder\watch folder"
第二个是"watch folder"
我想用函数直接从第一个字符串中查找最后位置的串是不是"watch folder"
请问用什么函数合适?

不要转成string CString等其他类型 就直接拿函数过来用 类库里有没有这样的函数??
谢谢了
[解决办法]
strcmp可以  只要你定位好参数地址位置
[解决办法]
貌似没有..
[解决办法]

#include <tchar.h>
#include <stdio.h>
#include <string.h>
#define MAX_PATH 260
#define _UNICODE //本行可有可无
TCHAR path1[MAX_PATH]=_T("E:\\folder\\watch folder");
TCHAR path2[MAX_PATH]=_T("watch folder");
TCHAR *p;
int main() {
    p=_tcsstr(path1,path2);
    if (p==(TCHAR *)path1+(_tcslen(path1)-_tcslen(path2))) {
        _tprintf("[%s] end with [%s]\n",path1,path2);
    } else {
        _tprintf("[%s] NOT end with [%s]\n",path1,path2);
    }
    return 0;
}
//[E:\folder\watch folder] end with [watch folder]
//

[解决办法]
可以用strcmp吗?可以的话就这样搞,比如在A中找末尾是不是B,定义一个指针p,指向A字符串末尾前n个的位置(n就是B的长度),这个好计算吧。然后直接strcmp(p,B)
[解决办法]
strrstr(path,"watch folder")[strlen("watch folder")] == '\0';
[解决办法]
自己写一个吧,并不复杂

BOOL EndStrInclude(TCHAR *s, TCHAR *d)
{
if(NULL==s
[解决办法]
NULL==d) return FALSE;
#ifdef _UNICODE
#define _MY_TYPE_ short
#else
#define _MY_TYPE_ char
#endif
_MY_TYPE_ *p1=(_MY_TYPE_ *)s;
_MY_TYPE_ *p2=(_MY_TYPE_ *)d;

while(*p1) p1++;
while(*p2) p2++;

    while(1)
{
if(*p2!=*p1) return FALSE;
if(p2==(_MY_TYPE_ *)d) break;
if(p1==(_MY_TYPE_ *)s) return FALSE;
p1--;
p2--;
}
return TRUE;
}


测试:
int main() 
{
TCHAR  A[]="E:\\folder\\watch folder";
TCHAR  B[]="watch folder";
    if(EndStrInclude(A,B))
    printf("A的屁股恰好是B!")
    else
printf("A的屁股和B还是有区别的!");

return 0
}

热点排行