利用标准char_traits..回想一下std::string实际上是std::basic_string或者更明确地说,std::basic_string >..这个char_traits类型描述字符的比较、它们如何复制、它们如何转换等等。basic_string,并提供您自己的习惯。char_traits不敏感地比较案例。struct ci_char_traits : public char_traits {
static bool eq(char c1, char c2) { return toupper(c1) == toupper(c2); }
static bool ne(char c1, char c2) { return toupper(c1) != toupper(c2); }
static bool lt(char c1, char c2) { return toupper(c1)
static int compare(const char* s1, const char* s2, size_t n) {
while( n-- != 0 ) {
if( toupper(*s1)
if( toupper(*s1) > toupper(*s2) ) return 1;
++s1; ++s2;
}
return 0;
}
static const char* find(const char* s, int n, char a) {
while( n-- > 0 && toupper(*s) != toupper(a) ) {
++s;
}
return s;
}};typedef std::basic_string ci_string;
详情已公布第29周大师.