目前可以認為最高效的方式是調用:StrChrI
因為這是API,不是CRT函數。
由於相應的DLL早已經載入到記憶體,所以調用起來高效。
另,可參考:<br />常用字串函數<br />1. 字串比較函數 </p><p> //比較兩個字串是否相同<br /> int StrCmp(LPCTSTR lpStr1,LPCTSTR lpStr2);<br /> int StrCmpN(LPCTSTR lpStr1,LPCTSTR lpStr2,int nChar);<br /> int strcmp( const char *string1, const char *string2 );<br /> int wcscmp( const wchar_t *string1, const wchar_t *string2 );<br /> int CompareString(LCID Locale, DWORD dwCmpFlags, LPCTSTR lpString1, int cchCount1, LPCTSTR lpString2, int cchCount2); </p><p>2. 計算字串長度 </p><p> HRESULT StringCchLength( LPCTSTR psz,size_t cchMax,size_t *pcch); //replacement for strlen<br /> size_t strlen( const char *string );<br /> size_t wcslen( const wchar_t *string ); </p><p>3. 字串賦值函數 </p><p> HRESULT StringCchCopy(LPTSTR pszDest,size_t cchDest,LPCTSTR pszSrc); //replacement for strcpy<br /> HRESULT StringCchCopyN(LPTSTR pszDest,size_t cchDest,LPCTSTR pszSrc,size_t cchSrc); //replacement for strncpy<br /> LPTSTR StrCpy(LPTSTR psz1,LPCTSTR psz2); //存在安全問題<br /> LPTSTR StrCpyN(LPTSTR psz1,LPCTSTR psz2,int cchMax); //存在安全問題<br /> char *strcpy( char *strDestination, const char *strSource );<br /> wchar_t *wcscpy( wchar_t *strDestination, const wchar_t *strSource );<br /> char *strncpy( char *strDest, const char *strSource, size_t count );<br /> wchar_t *wcsncpy( wchar_t*strDest, const wchar_t *strSource, size_t count ); </p><p>4. 字串串連函數 </p><p> HRESULT StringCchCat( LPTSTR pszDest,size_t cchDest,LPCTSTR pszSrc); //replacement for strcat<br /> HRESULT StringCchCatN( LPTSTR pszDest,size_t cchDest,LPCTSTR pszSrc,size_t cchMaxAppend); //replacement for strncat<br /> LPTSTR StrCat( LPTSTR psz1,LPCTSTR psz2); //存在安全問題<br /> LPTSTR StrNCat( LPTSTR pszFront,LPCTSTR pszBack,int cchMax); //存在安全問題<br /> char *strcat( char *strDestination, const char *strSource );<br /> wchar_t *wcscat( wchar_t *strDestination, const wchar_t *strSource );<br /> char *strncat( char *strDest, const char *strSource, size_t count );<br /> wchar_t *wcsncat( wchar_t *strDest, const wchar_t *strSource, size_t count ); </p><p>5. 字元尋找函數 </p><p> //尋找字串中指定字元第一次出現的位置<br /> LPTSTR StrChr( LPCTSTR lpStart,TCHAR wMatch); //區分大小寫<br /> char *strchr( const char *string, int c );<br /> wchar_t *wcschr( const wchar_t *string, wchar_t c );<br /> LPTSTR StrChrI( LPCTSTR lpStart,TCHAR wMatch); //不區分大小寫 </p><p> //尋找字串中指定字元最後一次出現的位置<br /> LPTSTR StrRChr( LPCTSTR lpStart,LPCTSTR lpEnd,TCHAR wMatch); //區分大小寫<br /> char *strrchr( const char*string, int c );<br /> wchar *wcsrchr( const wchar_t *string, int c );<br /> LPTSTR StrRChrI( LPCTSTR lpStart,LPCTSTR lpEnd,TCHAR wMatch); //不區分大小寫 </p><p> *注 StrRChr()函數可以通過StrChr()函數和while迴圈來實現。 </p><p>補充:<br />尋找字串: </p><p> _tcsstr(........) </p><p>字串轉化為double型數字 </p><p> _tcstod( const char *nptr, char **endptr ) </p><p>字串轉化為double型整數(只取整數部分,不取小數)Convert strings to a long-integer value. </p><p> _tcstoul ( const char *nptr, char **endptr, int base ) </p><p> _tcstol ( const char *nptr, char **endptr, int base ) </p><p>取子字串 </p><p>Extracts a substring of length nCount characters from this CStringT object, starting at position iFirst (zero-based). </p><p>CStringT Mid(<br /> int iFirst,<br /> int nCount<br />) const;<br />CStringT Mid(<br /> int iFirst<br />) const; </p><p>example: </p><p>//typedef CStringT < TCHAR, StrTraitATL < TCHAR > > CAtlString; </p><p>CAtlString s( _T("abcdef") );<br />_ASSERT( s.Mid( 2, 3 ) == _T("cde") );
可以參考下面內容
http://msdn.microsoft.com/en-us/library/bb759935%28VS.85%29.aspx