void
main()
{
std::string str1 = "abracadabra";
std::string str2 = "AbRaCaDaBra";
if (!str1.compare(str2)) {
cout << "Compares"
}
}
我怎样才能使这项工作?基本上使上述不区分大小写。相关问题
我用 Google 搜索了一下
http://msdn.microsoft.com/en-us/library/zkcaxw5y.aspx
有一个不区分大小写的方法 String::Compare(str1, str2, Bool)。问题是这与我的工作方式有何关系。
您可以创建一个谓词函数并在 std::equals
中使用它来执行比较:
bool icompare_pred(unsigned char a, unsigned char b)
{
return std::tolower(a) == std::tolower(b);
}
bool icompare(std::string const& a, std::string const& b)
{
if (a.length()==b.length()) {
return std::equal(b.begin(), b.end(),
a.begin(), icompare_pred);
}
else {
return false;
}
}
现在你可以简单地做:
if (icompare(str1, str)) {
std::cout << "Compares" << std::endl;
}