// string/icstring.hpp #ifndef ICSTRING_HPP #define ICSTRING_HPP #include #include #include /* Замена функций стандартного класса char_traits * для того, чтобы операции со строками * выполнялись без учета регистра символов */ struct ignorecase_traits : public std::char_traits { // Проверка равенства c1 и c2 static bool eq(const char& c1, const char& c2) { return std::toupper(c1)==std::toupper(c2); } // Проверка условия "с1 меньше c2" static bool lt(const char& c1, const char& c2) { return std::toupper(c1) icstring; /* Определение оператора вывода, * так как тип трактовок отличен от типа, * заданного для std::ostream */ inline std::ostream& operator << (std::ostream& strm, const icstring& s) { // Простое преобразование icstring в обычную строку return strm << std::string(s.data(),s.length()); } #endif // ICSTRING_HPP