Login | Register   
LinkedIn
Google+
Twitter
RSS Feed
Download our iPhone app
TODAY'S HEADLINES  |   ARTICLE ARCHIVE  |   FORUMS  |   TIP BANK
Browse DevX
Sign up for e-mail newsletters from DevX


Tip of the Day
Language:
Expertise: Intermediate
Jan 3, 2000

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.

 

 

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