Customize a string class with char_traits
The string
class is an alias of the basic_string
class, with the signature:
class basic_string<char, std::char_traits<char>>;
The first template parameter provides the type of character. The second template parameter provides a character traits class, which provides basic character and string operations for the specified character type. We normally use the default char_traits<char>
class.
We can modify the behavior of a string by providing our own custom character traits class.
How to do it…
In this recipe, we will create a character traits class for use with basic_string
that will ignore casing for comparison purposes:
- First, we'll need a function to convert characters to a common case. We'll use lowercase here, but it's an arbitrary choice. Uppercase would work just as well:
constexpr char char_lower(const char& c) { if(c >= 'A' &...