Case-insensitive Comparison of Strings

Case-insensitive Comparison of Strings

Class std::string’s overloaded operator == performs a case-sensitive comparison. This means that the following strings are not identical when compared using ==:

   string s1 = "Jellylorum";  string s2 = "JellyLorum";

Unfortunately, there is no standard version of operator == that performs a case-insensitive comparison. There are several workarounds, most of which require familiarity with the underlying machinery of STL, the notion of char traits, function objects, binders, and so on. For many programmers who simply wish to perform case-insensitive comparisons without tampering with STL headers, these solutions are too complicated or unacceptable. The simplest way to get around this is by overloading the standard C function strcimp(). You overload it so that it takes strings rather than char *:

   #include <cstring> // needed for stricmp()  #include <string>   inline int stricmp (const std::string &s1,                                 const std::string &s2)  {   return stricmp (s1.c_str(), s2.c_str()); // C's stricmp  }

Note that this function, like its C counterpart, performs a lexicographical comparison. Therefore, the result can be


Share the Post: