560________________________________Часть IV. Новые возможности C++
32-разрядной совместимости), она все еще заслуживает изучения по той простой причине, что многие программисты на C++ до сих пор используют строковые функции ANSI С, несмотря на простоту изучения и применения строкового класса ANSI C++, избавляющего от свойственных строкам С проблем. Эти проблемы включают в себя: задание избыточного объема памяти из-за возможной нехватки длины строки, постоянные выделения и освобождения памяти при копировании строк, потерю завершающего строки нуля и т. п. — все, что вызывает головную боль при отладке.
Замечание
В наиболее современной версии строковой библиотеки ANSI C++, которая и описывается здесь, для обработки строк используются шаблоны, т. е. строковый класс может обрабатывать типы char и wchat_t (расширенный символьный тип — более одного байта), а также любой определенный в C++ тип. Хотя функции-члены остались, по существу, без изменений, их синтаксис в стиле шаблонов библиотеки STL, представляющей из себя еще одну библиотеку ANSI C++, часто довольно трудно читаем. Тр, что вы узнаете из этой главы будет очень полезным, поскольку все больше и больше компиляторов предлагают реализацию шаблонов и STL для разных платформ.
В этой главе вы:
• Узнаете, где располагается заголовочный файл строкового класса ANSI C++ и как из Справочника по библиотеке классов (Class Library Reference) получить интересующую вас информацию о строковом классе.
• Научитесь создавать с помощью различных конструкторов экземпляры строкового класса ANSI C++ в ваших собственных программах.
• Научитесь интегрировать строковый класс с ресурсами, специфичными для Windows, такими как строковые таблицы.
• Научитесь полностью использовать преимущества функций строкового класса, включая функции объединения, сравнения, вставки, удаления, поиска и выделения подстрок.
• Получите возможность сравнить функции-члены строкового класса с наиболее популярными строковыми функциями С: strien, strcat и strcpy. Также будет рассмотрена возможность использования существующих конструкций языка С без потери преимуществ строкового класса ANSI C++.
!
• Узнаете, как перехватывать исключительные ситуации, генерируемые членами строкового класса.
• Научитесь сознательно использовать — или сознательно избегать — функции, специфичные только для продукции Borland.