Item 2. Case-Insensitive Strings桺art 1
Difficulty: 7
So you want a case-insensitive string class? Your mission, should you choose to accept it, is to write one.
This Item is composed of three related points.
What does "case-insensitive" mean?
Write a ci_string class that is identical to the standard std::string class but that is case-insensitive in the same way as the commonly provided extension stricmp(). A ci_string should be usable as follows:
ci_string s( "AbCdE" );
// case insensitive
//
assert( s == "abcde" );
assert( s == "ABCDE" );
// still case-preserving, of course
//
assert( strcmp( s.c_str(), "AbCdE" ) == 0 );
assert( strcmp( s.c_str(), "abcde" ) != 0 );
Is making case sensitivity a property of the object a good idea?
|