首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

VC++怎么不区分大小写查找字符串

2012-11-03 
VC++如何不区分大小写查找字符串?如题,VC++如何不区分大小写高效查找字符串?[解决办法]“高效”不知道可以用

VC++如何不区分大小写查找字符串?
如题,VC++如何不区分大小写高效查找字符串?

[解决办法]
“高效”不知道

可以用toupper()或tolower()都转成大写或小写,再查找(strstr)
[解决办法]
另,可参考:
常用字符串函数
1. 字符串比较函数

//比较两个字符串是否相同 
int StrCmp(LPCTSTR lpStr1,LPCTSTR lpStr2);
int StrCmpN(LPCTSTR lpStr1,LPCTSTR lpStr2,int nChar);
int strcmp( const char *string1, const char *string2 );
int wcscmp( const wchar_t *string1, const wchar_t *string2 );
int CompareString(LCID Locale, DWORD dwCmpFlags, LPCTSTR lpString1, int cchCount1, LPCTSTR lpString2, int cchCount2);

2. 计算字符串长度
 
HRESULT StringCchLength( LPCTSTR psz,size_t cchMax,size_t *pcch); //replacement for strlen
size_t strlen( const char *string );
size_t wcslen( const wchar_t *string );
 
3. 字符串赋值函数
 
HRESULT StringCchCopy(LPTSTR pszDest,size_t cchDest,LPCTSTR pszSrc); //replacement for strcpy
HRESULT StringCchCopyN(LPTSTR pszDest,size_t cchDest,LPCTSTR pszSrc,size_t cchSrc); //replacement for strncpy
LPTSTR StrCpy(LPTSTR psz1,LPCTSTR psz2); //存在安全问题
LPTSTR StrCpyN(LPTSTR psz1,LPCTSTR psz2,int cchMax); //存在安全问题
char *strcpy( char *strDestination, const char *strSource );
wchar_t *wcscpy( wchar_t *strDestination, const wchar_t *strSource );
char *strncpy( char *strDest, const char *strSource, size_t count );
wchar_t *wcsncpy( wchar_t*strDest, const wchar_t *strSource, size_t count );
 
4. 字符串连接函数
 
HRESULT StringCchCat( LPTSTR pszDest,size_t cchDest,LPCTSTR pszSrc); //replacement for strcat
HRESULT StringCchCatN( LPTSTR pszDest,size_t cchDest,LPCTSTR pszSrc,size_t cchMaxAppend); //replacement for strncat
LPTSTR StrCat( LPTSTR psz1,LPCTSTR psz2); //存在安全问题
LPTSTR StrNCat( LPTSTR pszFront,LPCTSTR pszBack,int cchMax); //存在安全问题
char *strcat( char *strDestination, const char *strSource );
wchar_t *wcscat( wchar_t *strDestination, const wchar_t *strSource );
char *strncat( char *strDest, const char *strSource, size_t count );
wchar_t *wcsncat( wchar_t *strDest, const wchar_t *strSource, size_t count );
 
5. 字符查找函数
 
//查找字符串中指定字符第一次出现的位置
LPTSTR StrChr( LPCTSTR lpStart,TCHAR wMatch); //区分大小写
char *strchr( const char *string, int c );
wchar_t *wcschr( const wchar_t *string, wchar_t c );
LPTSTR StrChrI( LPCTSTR lpStart,TCHAR wMatch); //不区分大小写
 
//查找字符串中指定字符最后一次出现的位置
LPTSTR StrRChr( LPCTSTR lpStart,LPCTSTR lpEnd,TCHAR wMatch); //区分大小写
char *strrchr( const char*string, int c );
wchar *wcsrchr( const wchar_t *string, int c );
LPTSTR StrRChrI( LPCTSTR lpStart,LPCTSTR lpEnd,TCHAR wMatch); //不区分大小写

*注 StrRChr()函数可以通过StrChr()函数和while循环来实现。
 
补充:
查找字符串:

_tcsstr(........)

字符串转化为double型数字

_tcstod( const char *nptr, char **endptr )

 

字符串转化为double型整数(只取整数部分,不取小数)Convert strings to a long-integer value.

_tcstoul ( const char *nptr, char **endptr, int base )

_tcstol ( const char *nptr, char **endptr, int base )

 

取子字符串

Extracts a substring of length nCount characters from this CStringT object, starting at position iFirst (zero-based).

CStringT Mid(
int iFirst,
int nCount
) const;
CStringT Mid(
int iFirst
) const;

example:

//typedef CStringT< TCHAR, StrTraitATL< TCHAR > > CAtlString;

CAtlString s( _T("abcdef") );
_ASSERT( s.Mid( 2, 3 ) == _T("cde") );


[解决办法]
CString Bhar="Windows is good OS";
Bhar.MakeLower();
CString str="windows";
str.MakeLower();


int i=Bhar.Find(str);
if(i!=-1)
MessageBox("找到字符串");
else MessageBox("没有找到");
[解决办法]
函数名: stricmp 
功 能: 以大小写不敏感方式比较两个串 
用 法: int stricmp(char *str1, char *str2); 
程序例: 

#include <string.h> 
#include <stdio.h> 

int main(void) 

char *buf1 = "BBB", *buf2 = "bbb"; 
int ptr; 

ptr = stricmp(buf2, buf1); 

if (ptr > 0) 
printf("buffer 2 is greater than buffer 1\n"); 

if (ptr < 0) 
printf("buffer 2 is less than buffer 1\n"); 

if (ptr == 0) 
printf("buffer 2 equals buffer 1\n"); 

return 0; 



[解决办法]
直接用标准C++库吧,通用,高效,简洁

C/C++ code
#include <string>using namespace std;int main(){    string s("Windows is good OS");    string t("windows");    if (s.find(t) != s.size())    {        // found    }    else    {        // not found    }    return 0;}
[解决办法]
探讨
引用:
直接用标准C++库吧,通用,高效,简洁C/C++ code#include <string>usingnamespace std;int main()
{string s("Windows is good OS");string t("windows");if (s.find(t)!= s.size())
    {// found    }else
    {// not found    }re¡­

这个不行

[解决办法]
CString Bhar="Windows is good OS"; 
CString str_temp = "wINDOWs";
Bhar.ToUpper();
str_temp.ToUpper();
Bhar.Find(str_temp);
[解决办法]
要快就弄个无视大小写的KMP三。。。
[解决办法]
KMP是一种无回溯的字符串模式匹配算法

热点排行