Browse DevX
Sign up for e-mail newsletters from DevX

Tip of the Day
Expertise: Intermediate
Jan 3, 2000



Building the Right Environment to Support AI, Machine Learning and Deep Learning

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

Danny Kalev
Comment and Contribute






(Maximum characters: 1200). You have 1200 characters left.



Thanks for your registration, follow us on our social networks to keep up-to-date