void
main()
{
std::string str1 = "abracadabra";
std::string str2 = "AbRaCaDaBra";
if (!str1.compare(str2)) {
cout << "Compares"
}
}
How can I make this work? Bascially make the above case insensitive. Related question I Googled and here
http://msdn.microsoft.com/en-us/library/zkcaxw5y.aspx
there is a case insensitive method String::Compare(str1, str2, Bool). Question is how is that related to the way I am doing.
Comparing strings in a case insensitive manner means to compare them without taking care of the uppercase and lowercase letters. To perform this operation the most preferred method is to use either toUpperCase() or toLowerCase() function. toUpperCase() function: The str.
stringCmp() - Compares two strings (case sensitive).
You can't compare strings in C with ==, because the C compiler does not really have a clue about strings beyond a string-literal.
operators differs from string comparison using the String. CompareTo and Compare(String, String) methods. They all perform a case-sensitive comparison.
You can create a predicate function and use it in std::equals
to perform the comparison:
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;
}
}
Now you can simply do:
if (icompare(str1, str)) {
std::cout << "Compares" << std::endl;
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With