_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.[]
返回值:成功则返回要查找字符第一次出现的位置,失败返回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。)
===================================================================华丽的分割线===================================================================
_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截断,截断最后一个\后面的字符(不包括\)。
_tcschr和_tcsrchr使用的更多相关文章
- [转]C++字符串操作函数_tcschr、_tcsrchr
原文出处:https://blog.csdn.net/eickandy/article/details/50083169 C++标准库函数提供了字符和字符串的操作函数,并提供了其UNICODE版本,本 ...
- strchr,wcschr 和strrchr, wcsrchr,_tcschr,_tcsrchr功能
strchr,wcschr 和strrchr, wcsrchr,_tcschr,_tcsrchr功能 (1) char *strchr( const char *string, int ...
- strchr,wcschr 及strrchr, wcsrchr,_tcschr,_tcsrchr函数
strchr,wcschr 及strrchr, wcsrchr,_tcschr,_tcsrchr函数 (1) char *strchr( const char *string, int ...
- _tcsrchr
原文:http://www.cnblogs.com/diyunpeng/archive/2012/01/18/2325289.html _tcsrchr #include <afx.h> ...
- Duilib源码分析(四)绘制管理器—CPaintManagerUI—(前期准备一)
上节中提到在遍历创建控件树后,执行了以下操作: 1. CDialogBuilder构建各控件对象并形成控件树,并返回第一个控件对象pRoot: 2. m_pm.AttachDialo ...
- MFC 字符串类CString 源代码
原文:http://blog.csdn.net/benny5609/article/details/1926088 CString使用的是引用技术,可以共享数据(这个大家都知道),另外空的CStirn ...
- 第9章 用内核对象进行线程同步(4)_死锁(DeadLock)及其他
9.7 线程同步对象速查表 对象 何时处于未触发状态 何时处于触发状态 成功等待的副作用 进程 进程仍在运行的时候 进程终止的时(ExitProcess.TerminateProcess) 没有 线程 ...
- C++ Unicode SBCS 函数对照表
C++ Unicode SBCS 函数对照表,以备日后查阅 Generic SBCS UNICODE TCHAR char wchar_t _TEOF EOF WEOF _TINT int wint_ ...
- 【转】代码高处走 从VC6到VC9移植代码问题说明
首先可以直接用Visual Studio 2008的打开VC6的工作区文件和项目文件(dsw和dsp),并将其升级为VS2008的解决方案格式和项目格式(sln和vcproj),VC9的编译器相对于V ...
随机推荐
- PHPCMS V9 fsockopen 函数被禁用解决方案
PHPCMS V9 fsockopen 禁用解决方案, 把fsockopen 替换成 pfsockopen 替换文件:phpsso_server/api/uc_client_1_5/client.ph ...
- PHP中的prepare准备语句的意义
mysqli和PDO扩展都有prepare这个语法,刚开始以为只是单纯的语法,没想到,还是有实际意义的: “每次发送查询语句给MySQL服务时,都必须解析该查询的语法,确保结构正确并能够执行.这是这个 ...
- 浅谈 JavaScript 中常用数据及其类型转换
在 JavaScript 中有一些 value 会经常碰到: [] (空数组).{} (空对象).'' (空字符串).undefined.null.0.NaN.Infinite 也会经常碰到数据类型转 ...
- Elixir 学习资源
http://segmentfault.com/blog/lds/1190000002458978
- Android 获取全局Context的技巧
回想这么久以来我们所学的内容,你会发现有很多地方都需要用到Context,弹出Toast的时候需要.启动活动的时候需要.发送广播的时候需要.操作数据库的时候需要.使用通知的时候需要等等等等.或许目前你 ...
- CSS 实例之文字的凸起与凹陷
一些页面会有一些凹凸文字效果,这个主要是设置背景+文字阴影来达成这个效果的.文字阴影使用方法如下: text-shadow: 水平位置 垂直位置 模糊距离 阴影颜色 具体代码如下: body { ba ...
- [Asp.net mvc]Asp.net mvc 中使用LocalStorage
目前使用比较多的本地存储方案有比如Flash SharedObject.Google Gears.Cookie.LocalStorage.User Data.Open Database等方案.综合比较 ...
- 最常见到的runtime exception 异常
ArithmeticException, 算术异常ArrayStoreException, 将数组类型不兼容的值赋值给数组元素时抛出的异常BufferOverflowException, 缓冲区溢出异 ...
- 国内一元钱 正常搭建android开发环境
如果你人在gfw之外,那么此篇文章对你来说毫无用处,请自动略过.. 笔者自android出来之后,就一直想尝试一下.可惜,几年来一直未能够定下身心来研究尝试.而所做的工作也与android没有关系,所 ...
- 在 Azure 中备份 Linux 虚拟机
可以通过定期创建备份来保护数据. Azure 备份可创建恢复点,这些恢复点存储在异地冗余的恢复保管库中. 从恢复点还原时,可以还原整个 VM,或只是还原特定的文件. 本文介绍如何将单个文件还原到运行 ...