Шаг 9 - Строковые классы [AnsiString, char*, WideString]

Я думаю, что в любой программе подобные штуки нужны. Вообще на строки C++ Builder богат - тут и собственные массивы, и свистнутый у Delphi AnsiString, и UNICODE WideString, и даже из STL есть класс. Так что есть из чего выбрать. Но я перечислю по порядку.

AnsiString

Также называемый просто String (для удобства записи определен через typedef). Основной строковый класс VCL. Используется почти везде, где нужно представить текст. На мой взгляд, самый удобный класс - много хороших методов, хорошая совместимость, объектный конструктор переваривает типы от char* до double. Как я сказал, методов много, даже чересчур. Перечислю главные:

Еще эти строки сравниваются по стандарту ANSI через операторы сравнения.

char[]

Старые добрые символьные массивы, состоящие из символов и ограниченные последним значением, равным NULL. Поэтому их еще называют NULL-terminated string. Писать долго, зато очень звучно ;). Используются в основном при обращении к WinAPI функциям. При желании более подробную информацию можно посмотреть в Help'е, а я приведу функции. Первый аргумент здесь везде основная строка:

WideString

Этот класс также взят из Delphi. Основным его отличием от AnsiString является хранение массива расширенных символов, называемых wide characters, тип wchar_t*. Поэтому он в основном используется в COM приложениях или при обращении к OLE интегрированным объектам. Приводить его методы я не буду, поскольку они очень сильно похожи на соответствующие в AnsiString. Наиболее оригинальным является метод c_bstr(), возвращающий, по аналогии с c_str(), указатель на массив из wchar_t*. Он используется без аргументов.

Надо отметить, что существуют еще некоторые строчные классы C++, которые я не рассмотрел. Например: string, basic_string, SmallString. Я все же скажу насчет первых двух. Класс string я считаю несколько устаревшим на фоне AnsiString. Класс basic_string является классом STL.

На сегодня все, по-моему, много разобрали.


Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Аванесов Самвел.