简单的工作室

当前位置: 主页>编程技巧>VC++编程>

TCHAR字符串找子串(VC字符串函数操作)

时间:2014-05-15 11:12来源:未知 作者:admin 点击:
有两个字符串都是TCHARpath[MAX_PATH], 比如第一个串是"E:\folder\watchfolder" 第二个是"watchfolder" 我想用函数直接从第一个字符串中查找最后位置的串是不是"watchfolder" 请问用什么函数合适? #includetchar.h #includestdio.h #includestring.h #defineMAX_PATH2

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


相关函数说明:
  
 _tcsstr:字符串1在字符串2中首次出现的位置,未出现返回NULL值;
_tcsrchr:字符1 在字符串2中首次出现的位置,未出现返回NULL值

TCHAR字符串操作函数:
_tcslen(str) 获得字符串长度
_tcsrchr(str, L'\\') 反向搜索获得最后一个TCHAR的位置
_stprintf(TCHAR *buffer,const TCHAR *format [,argument] ... )获得一个格式化字符串
_tcsdup 给一个指针分配源字符串大小的内存并从源字符串copy值
_tcstok 按标记将字符串拆分
tcscpy 拷贝字符串
(_TCSRCHR(SZFILEPATH, _T('\\')))[1] = 0
char szFilePath[MAX_PATH]; 
 GetModuleFileName(NULL, szFilePath, MAX_PATH);  
 (_tcsrchr(szFilePath, _T('\\')))[1] = 0;
 
 
这是一段获得程序当前目录的一段代码
这段代码很简单,唯一有点难度的就是最后一句(_tcsrchr(szFilePath, _T('\\')))[1] = 0;
其实这句可分解为两句话
char *ch = _tcsrchr(szFilePath, _T('\\'));查找最后一个\出现的位置,并返回\后面的字符(包括\)
ch[1] = 0;//NULL  通过操作来操作szFilePath = 将szFilePath截断,截断最后一个\后面的字符(不包括\)

如果要获取TCHAR *字符串前几位字符串 我们可以通过 szFilePathe[15]=0 来截取,这样我们可以结合前面的函数

path1[(_tcslen(path1)-_tcslen(path2))]=0从而获取字符串前面几位的字符

(责任编辑:简单的工作室)
顶一下
(1)
100%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片
栏目列表
推荐内容