#ifndef CISTRING_H #define CISTRING_H #include <string> //using namespace std; struct ci_char_traits : public std::char_traits<char> { static bool eq( char c1, char c2) { return toupper(c1) == toupper(c2); } static bool lt( char c1, char c2) { return toupper(c1) < toupper(c2); } static int compare( const char *s1, const char *s2, size_t n) { return memicmp( s1, s2, n); // non-standard ! } static const char *find( const char *s, int n, char ch) { while ( n-- > 0 && toupper(*s) != toupper(ch) ) { ++s; } return n > 0 ? s : 0; } }; typedef std::basic_string<char, ci_char_traits> ci_string; #endif /* CISTRING_H */