Исходники.Ру - Программирование
Исходники
Статьи
Книги и учебники
Скрипты
Новости RSS
Магазин программиста

Главная » Статьи по программированию » Borland C++ Builder - Работа с текстом и строками »

Обсудить на форуме Обсудить на форуме

Классы AnsiString и Set

В VCL для представления текстовых строк используются не символьные массивы и не шаблон стандартной библиотеки, а строки Object Pascal. Кроме того, многие свойства компонентов представлены множествами этого языка. Для моделирования таких объектов C++Builder реализует классы AnsiString и Set. В этой статье мы даем краткое описание этих классов.

Класс AnsiString

Класс AnsiString определяется в заголовке dstring.h. Конструктор этого класса перегружен, так что строки можно инициализировать различными способами - другой строкой, строкой С (указателем на char), а также целыми типами. В последнем случае строка будет содержать текстовое представление числа.

Методы

Мы не будем приводить здесь полное описание всех методов AnsiString, а расскажем только о важнейших.

  • int _fastcall AnsiCompare(const AnsiStringfi rhs) const.; Этот метод производит сравнение строки с указанной строкой. Сравнение производится в соответствии с текущим локалом Windows, т. е., например, в русифицированной системе сравнение строк с русским текстом должно давать правильный результат. (Честно говоря, я этого не проверял.) Соответственно результат сравнения может отличаться от результата операций сравнения, которые производятся исходя из ASCII-значений символов.
  • int _fastcall AnsiPos(const AnsiStringS subStr) const; Метод возвращает позицию указанной подстроки. Первому символу строки соответствует 1. Нулевой результат означает, что подстрока не найдена.
  • char* _fastcall с str() const; Возвращает указатель на ограниченную нулем строку С (символьный массив). Если строке ничего не присвоено, возвращается указатель на пустую строку.
  • const void* fastcall data() const { return Data; } Аналогичен предыдущему, но возвращает нулевой указатель в случае неприсвоенной строки.
  • AnsiString& _fastcall Delete(int index, int count); Удаляет заданное число символов начиная с указанной позиции. Позиция 1 соответствует первому символу строки.
enum TStringFloatFormat{sffGeneral,
                        sffExponent,
                        sffFixed,
                        sffMumber,
                        sffCurrency };
  • static AnsiString _fastcall FloatToStrF(long double value, TStringFloatFormat format, int precision, int digits) ; Производит преобразование числа с плавающей точкой в текстовую форму в соответствии с указанным форматом.
  • AnsiString& _fastcall Insert(const AnsiString& sir, int index) ; Вставляет строку в указанной позиции (1 - перед первым символом). Если индекс меньше 1, он считается единицей.
  • static AnsiString fastcall IntToHex(int value,int digits) ; Преобразует число в строку с представлением его в виде щестнадцате-ричных цифр. Второй параметр указывает минимальное число цифр. Аналогичен Pos, но допускает многобайтовые символы.
  • bool _fastcall IsDelimiter (const AnsiString& delimiters, int index) const; Проверяет, входит ли символ в позиции index в указанную строку delimiters.
  • bool _fastcall IsEmptyO const; Возвращает true, если строка пустая.
  • int _fastcall LastDelimiter (const AnsiString& delimiters) const; Возвращает позицию последнего из символов строки, входящих в указанную строку ограничителей.
  • int _fastcall Length() const; Возвращает число байтов в строке.
  • static AnsiString fastcall LoadStr(int ident) ; Загружает строку строковым ресурсом исполняемого файла. Если ресурса с указанным идентификатором не существует, возвращается пустая строка.
  • AnsiString _fastcall Lowercase() const; Возвращает строку, преобразованную в нижний регистр в соответствии С Текущим ЛОКалом Windowa. He хюмвняет исходную строку.
  • int _fastcall Pos(const AnsiString& subStr) const; Возвращает позицию указанной подстроки.
  • int _cdecl printf(const char* format, ...); Формирует строку в соответствии со стандартным форматом С. Возвращает длину строки-результата.
  • AnsiString& _fastcall SetLength(int newLength) ; Устанавливает новую длину строки, перераспределяя память под ее символьный массив. В новый массив копируется исходное содержимое строки. Если новая длина меньше исходной, строка усекается.
  • AnsiString& cdecl sprintf(const char* format, ...); To же, что и printf (), но возвращается ссылка на модифицированную строку (*this).
  • StringOfChar
  • AnsiString fastcall Substring(int index, int count) const; Возвращает подстроку с указанной позицией и длиной.
  • AnsiString _fastcall Substring(int index, int count) const; Преобразует строку в число двойной точности. Если строка не содержит корректного представления числа с плавающей точкой, выбрасывается исключение EConvertError.
  • int _fastcall Tolnt() const; Преобразует строку в целое. Если строка не содержит корректного представления числа, выбрасывается исключение EConvertError.
  • int _fastcall ToIntDef(int defaultValue) const; Преобразует строку в целое. Если строка не содержит корректного представления числа, возвращается указанное значение по умолчанию.
  • AnsiString fastcall Trim() const; Возвращает строку с удаленными начальными и конечными пробелами и управляющими символами.
  • AnsiString fastcall TrimLeftO const; Возвращает строку с удаленными начальными пробелами и управляющими символами.
  • AnsiString _fastcall TrimRight() const; Возвращает строку с удаленными конечными пробелами и управляющими символами.
  • Unique
  • AnsiString _fastcall Uppercase() const; Возвращает строку, преобразованную в верхний регистр в соответствии с текущим локалом Windows. He изменяет исходную строку. В классе AnsiString реализованы операции присваивания, сложения (возвращает конкатенацию строк), индексации (возвращает символ с указанным индексом) и отношений (сравниваются ASCII-значения входящих В строку символов).

Если перед dstring.h включается заголовок iuatrcam кла директива

#define vcl_iostream

то строки можно использовать в операторах ввода/вывода потоков C++ с операциями " и ".

Класс Set

Set - это шаблон, определенный в заголовке sysset.h:

tempiate 
class _declspec(delphireturn) Set;

При объявлении конкретного класса нужно задать следующие параметры: тип элементов (обычто целый, символьный или перечисление), минимальное значение, которое может содержать множество (должно быть не меньше 0), и максимальное значение, которое может входить в множество (должно быть не больше 255). Вот примеры:

Set a5et0f32;
typedef Set SetOfUppercase;

Перегруженный конструктор создает либо пустое множество, либо копию существующего множества того же типа.

Множества можно складывать, умножать (объединение и пересечение) и вычитать (пересечение c дополнением). Операции " и " соответственно вводят или удаляют элемент из множества. Эти же операции могут использоваться для извлечения и передачи множеств в поток (в виде последовательностей нулей и единиц), если перед sysset.h включается заголовок iostream или директива

#define VCL_IOSTREAM

Множества Set имеют два метода:

  • Sets _fastcall Clear (); Удаляет из множества все элементы.
  • boo1 _fastcall Contains(const T el) const; Возвращает true, если множество содержит указанный элемент.

Может пригодится:


Автор: http://bcb-program.narod.ru/
Прочитано: 10111
Рейтинг:
Оценить: 1 2 3 4 5

Комментарии: (0)

Добавить комментарий
Ваше имя*:
Ваш email:
URL Вашего сайта:
Ваш комментарий*:
Код безопастности*:

Рассылка новостей
Рейтинги
© 2007, Программирование Исходники.Ру