原文出處:https://blog.csdn.net/eickandy/article/details/50083169
C++標准庫函數提供了字符和字符串的操作函數,並提供了其UNICODE版本,本文介紹_tcschr和_tcsrchr,名字很相似,就差一個字母r。
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。)
3、應用(獲取模塊路徑)
1 inline void getModulePath(CString &path) 2 { 3 char bufPath[1024] = {0}; 4 #if defined(_WIN64)
5 ::getModuleFileNameA(nullptr, bufPath, 1024); 6 (strrchr(bufPath, '\\'))[1] = 0; 7 #else
8 getcwd(bufPath, 1024); 9 #endif
10 path = bufPath; 11 }
以上代碼獲取去掉文件名后的目錄路徑,如果要獲取盤符根路徑,使用strchr即可(這兩個函數就差一個字母r,一定要看清楚,容易混淆)。