函数原型为:`TCHAR* _tcsstr(const TCHAR* str, const TCHAR* substr);`
- 参数:`str`为目标字符串,`substr`为待查找的子字符串。
- 返回值:若找到子字符串,返回指向`substr`在`str`中首次出现位置的指针;若未找到,返回`NULL`。
_tcsstr的搜索逻辑是从目标字符串的起始位置开始,按顺序逐字符匹配子字符串的每一个字符,直至全匹配或到达字符串末尾。例如,在字符串“Hello,World!”中查找“World”,_tcsstr会返回指向“W”的指针;若查找“test”,则返回`NULL`。
_tcsrchr:反向定位字符的最后出现位置
_tcsrchr的核心作用是在目标字符串中反向查找指定字符最后一次出现的位置。与`strrchr`类似,它同样基于TCHAR宏实现多字符集兼容,但聚焦于单个字符的反向搜索。
函数原型为:`TCHAR* _tcsrchr(const TCHAR* str, TCHAR ch);`
- 参数:`str`为目标字符串,`ch`为待查找的字符请意,此处是单个字符,而非子字符串。
- 返回值:若找到字符,返回指向`ch`在`str`中最后一次出现位置的指针;若未找到,返回`NULL`。
_tcsrchr的搜索逻辑与_tcsstr相反:它从目标字符串的位置'0'前开始,向前逐字符匹配指定字符,直至找到第一个匹配项或回溯至字符串起始位置。例如,在路径字符串“C:Program Filesapp.exe”中查找字符“”,_tcsrchr会返回指向最后一个“”的指针,从而便于提取文件名;若查找字符“x”,则返回`NULL`。
功能差异与应用场景
_tcsstr与_tcsrchr的核心差异体现在搜索对象和搜索方向上:
- 搜索对象:_tcsstr针对子字符串多个字符,_tcsrchr针对单个字符;
- 搜索方向:_tcsstr正向搜索从左至右,_tcsrchr反向搜索从右至左。
实际开发中,_tcsstr常用于判断子串是否存在如验证格式前缀、提取子串前的内容如截取URL中的域名;_tcsrchr则适用于获取文件路径中的文件名分割路径与文件名、提取字符串中特定分隔符后的内容如分析日志中的时间戳分隔符。
这两个函数通过明确的定位逻辑,为字符串析、内容提取等场景提供了高效支持,是多字符集开发中不可或缺的基础工具。
