Login | Register   
RSS Feed
Download our iPhone app
Browse DevX
Sign up for e-mail newsletters from DevX

Tip of the Day
Expertise: Intermediate
Jan 3, 2000



Full Text Search: The Key to Better Natural Language Queries for NoSQL in Node.js

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