_tcschr和_tcsrchr使用
好处:是可以不管是用unicode 编码还是其他 ,代码都不用改.
C++标准库函数提供了字符和字符串的操作函数,并提供了其UNICODE版本,如:
1、_tcschr代替strchr或者wcschr
函数功能:查找一个字符串中首次出现的指定字符。
函数原型: char *strchr(const char* _Str,int _Val) char *strchr(char* _Str,int _Ch) 头文件:#include <string.h> 功能: 查找字符串s中首次出现字符c的位置 说明: 返回首次出现c的位置的指针,返回的地址是被查找字符串指针开始的第一个与Val相同字符的指针,如果s中不存在c则返回NULL。 返回值:成功则返回要查找字符第一次出现的位置,失败返回NULL
函数原型:wchar_t *wcschr(const wchar_t *ws,wchar_t wc) 头文件:#include<wcschr.h> 说明:在宽字符串ws中查找宽字符wc,然后返回第一个匹配wc的位置即指针,如果没有找到就返回空指针NULL.[1] 返回值:成功则返回要查找字符第一次出现的位置,失败返回NULL
_tcschr
查找字符串中某个字符第一次出现的位置
两个参数
第一个参数:字符串
第二个参数:查找的字符
返回值:指向第一次在字符串中出现的该字符的指针,如果要查找的字符再串中没有出现,则返回NULL。
(注:_tcschr支持ANSI和UNICODE,ANSI使用strchr,UNICODE使用wcschr。)
2、_tcsrchr代替strrchr或者wcsrchr
函数功能:查找一个字符串中最后一次出现的指定字符。
函数原型: char *strrchr( const char *string, int c); char *wcsrchr( const wchar_t *string, int c ); 参数说明: 第一个参数:字符串 第二个参数:需要查找的字符 功能:查找一个字符串中最后出现的指定字符。 返回值:找出字符串中最后一个出现查找字符的地址,然后将该字符出现的地址返回。
(注:_tcsrchr支持ANSI和UNICODE,ANSI使用strrchr,UNICODE使用wcsrchr。)
===================================================================华丽的分割线===================================================================
_tcslen(str) 获得字符串长度 _tcsrchr(str, L'\\') 反向搜索获得最后一个TCHAR的位置 _stprintf(TCHAR *buffer,const TCHAR *format [,argument] ... )获得一个格式化字符串 _tcsdup 给一个指针分配源字符串大小的内存并从源字符串copy值 _tcstok 按标记将字符串拆分 tcscpy 拷贝字符串
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截断,截断最后一个\后面的字符(不包括\)。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理