C++_字符串匹配_忽略大小写_方法

在我们平时的学习和工作中,我们经常需要对字符串进行各种比较,例如,忽略大小写比较,精确比较等。但目前
C++标准库并没有为string提供这样的方法,从而使我们不能方便的比较。所以碰到这种问题一般是自己写一个字符串的比较规则,然后通过函数指针,或者函数对象调用,从而完成比较。也可以直接写为一个全局的字符串比较函数。
幸运的是,在标准C中提供了比较两个C style字符串的忽略大小写的比较方法,该方法就在头文件string.h中。
但是在windows下和linux中两个函数的名字不统一。所以须分别编写。、
如下即为windows下的全局的字符串忽略大小写比较函数。
  1. bool stringCompareIgnoreCase(std::string lhs,std::string rhs)
  2. {
  3.    return _stricmp(lhs.c_str(),rhs.c_str());
  4. }

上面的方法   不知道怎么用.........下面是自己写的

bool sCmpIgnoCase(const string &s1,const string &s2)
{
	int sl = s1.length();
	int tl = s2.length();
	string s3 = s1;
	string s4 = s2;
	for(int i=0; i=65 && s1[i]<=90) s3[i] = tolower(s3[i]);
	}
	for(int j=0; j=65 && s4[j]<=90) s4[j] = tolower(s4[j]);
	}
	int ans = s3.find(s4,0);
	if(ans > 0)
   		   return true;
    else return false;
}

增加大小写敏感开关

bool sCmpIgnoCase(const string &s1,const string &s2,int sensitiveoff)
{
	int sl = s1.length();
	int tl = s2.length();
	int ans;
	if(sensitiveoff == 0){
		string s3 = s1;
		string s4 = s2;
		for(int i=0; i=65 && s1[i]<=90) s3[i] = tolower(s3[i]);
		}
		for(int j=0; j=65 && s4[j]<=90) s4[j] = tolower(s4[j]);
		}
		ans = s3.find(s4,0);
	}else ans = s1.find(s2,0);
	if(ans >= 0)
   		   return true;
    else return false;
}



你可能感兴趣的:(C++)