tcsrchr使用教程,简单几步快速上手不求人!

吉云

今天搞代码的时候,遇到一个字符串处理的问题,需要在一个字符串里面找一个特定的字符,看看它一次出现的位置在哪。我记得之前用过类似的函数,但是一下子又想不起来具体叫啥,就去网上搜一下。

一开始我直接搜“字符串查找”,出来一堆 strchrwcschr 之类的,看着有点懵。后来才想起来,我这项目好像是为兼容各种字符集,用挺多 TCHAR_tc 开头的东西。估计字符串查找函数也有对应的“通用版本”。

摸索过程

tcsrchr使用教程,简单几步快速上手不求人!

果然,加上 _tcs 搜一下,就找到 _tcsrchr 这个函数。看网上的资料,它好像就是 strchrwcschr 的“通用版本”,会根据项目设置的字符集自动选择用哪个函数。这下就方便多,不用我自己去判断用哪个。

找到函数之后,我就开始试着用。过程还算顺利,没遇到啥大问题。就是一开始参数没传对,找半天没找到我要的字符。后来仔细看下函数的说明,才发现是自己把要找的字符和字符串的位置搞反,改过来之后就正常。

这里也简单记录下 _tcsrchr 的用法,省得以后忘:

  • 第一个参数是要查找的字符串。
  • 第二个参数是要找的字符。
  • tcsrchr使用教程,简单几步快速上手不求人!

  • 返回值是一个指针,指向字符串里一次出现这个字符的位置。如果没找到,就返回空指针(NULL)。

最终实现

也没啥复杂的,就是下面这几行代码:

c++

TCHAR szFilePath[MAX_PATH + 1];

tcsrchr使用教程,简单几步快速上手不求人!

GetModuleFileName(NULL, szFilePath, MAX_PATH);

TCHAR p = _tcsrchr(szFilePath, '\\');

if (p != NULL) {

// 找到,p 指向一个 '\\' 的位置

// ... 后续处理 ...

} else {

tcsrchr使用教程,简单几步快速上手不求人!

// 没找到

// ... 错误处理 ...

这段代码的功能是获取当前程序的文件路径,然后找到路径里一个反斜杠('\\')的位置,方便后续把文件名和路径分开。挺简单的一个功能,但是用 _tcsrchr 这个函数就省事多。

这回的小折腾还算顺利,也让我对 _tcsrchr 这个函数有更深的印象。以后再遇到类似的问题,应该就能直接想起来用。

tcsrchr使用教程,简单几步快速上手不求人!

把解决问题过程记录下来还是有用的,下次遇到相似的问题,直接翻翻自己的笔记就行!

免责声明:由于无法甄别是否为投稿用户创作以及文章的准确性,本站尊重并保护知识产权,根据《信息网络传播权保护条例》,如我们转载的作品侵犯了您的权利,请您通知我们,请将本侵权页面网址发送邮件到qingge@88.com,深感抱歉,我们会做删除处理。

目录[+]