Объекты
класса Ansistring, в первом приближении, можно рассматривать как обычные
переменные символьного типа. Их можно складывать (операция конкатенации)
и сравнивать, используя естественные операции отношения. С помощью
различного рода конструкторов класса такие переменные можно объявлять
и присваивать им различные начальные значения [18]:
На указание длины строки выделены 4 байта, что позволяет работать
со строками, на длину которых накладывает ограничение лишь размер
оперативной памяти. Имеется возможность хранения и обработки двухбайтовых
символов таблицы UNICODE. В help-материалах им соответствует аббревиатура
MBCS – Multi-Byte Character Set (многобайтный набор символов).
Объявление
длинных строк можно совместить с их инициализацией, напоминающей аналогичную
операцию с массивами типа char:
Ansistring s1, s2 = "ABCDEFGH";
Длинную
строку можно заполнить заданным символом с помощью метода stringOfChar,
первый аргумент которого задаёт код символа-заполнителя, а второй
— количество повторений:
s1.StringOfChar('=',20);
ВСВ-программа
имеет доступ к любому символу длинной строки:
s1=s2[4];
Индексы
длинной строки отсчитываются от 1, поэтому в результате приведённого
выше оператора присваивания в переменной s1 окажется буква Е. С помощью
метода Length можно определить количество символов в ANSI-строке:
int k=as.Length();
Нулевая
длина соответствует пустой, не инициализированной строке. Узнать об
этом можно и с помощью метода IsEmpty, выдающего значение true, если
анализируемая строка пуста:
bool b1=s1.IsEmpty();
Указатель
на последний значащий символ можно получить, не обращаясь к определению
длины:
char *k;
k=s1.AnsiLastChar() ;
Три
метода TrimLeft, TrimRight и Trim позволяют отсечь либо только лидирующие
(слева), либо только хвостовые (справа), либо и головные, и хвостовые
пробелы.
Для
отсечения k-символов с конца строки (среди них могут находиться и
не только пробелы) можно воспользоваться методом setLength:
s1.SetLength(3);
Аргумент
этой функции устанавливает новую длину, которая не может быть больше
числа символов, находившихся в s1.
Для
добавления новых символов к концу строки используется операция конкатенации:
AnsiString s1="Привет!"; s1=s1+" Вася"; s1 +=
" и Петя";
В строке
типа Ansistring можно выделить (метод Substring) или удалить (метод
Delete) подстроку заданной длины d, начинающуюся символом с индексом
j:
s2=s1.Substring(j, d); s1. Delete(j, d);
Вставка
подстроки s2 в строку s1 после символа s1[j] осуществляется следующим
образом:
s1.Insert (s2,j) ;
Для
поиска индекса первого вхождения строки s2 в строку s1 используется
метод AnsiPos или POS:
AnsiString s1="Abcdefgh", s2="cd", s3="cb";
int k=s1.AnsiPos(s2); // результат k=3
int j=Pos(s1,s3); // результат j=0
Над
данными типа Ansistring можно выполнять любые сравнения, используя
стандартные операции отношения – >, >=, <, <=, ==, !=.
Методы типа AnsiCompare и AnsicompareIC могут привести к неожиданным
результатам из-за использования других кодировочных таблиц:
AnsiString s1="a",s2="A"; int k=s1.AnsiCompare(s2);
В этом
примере k = -1, что свидетельствует о соотношении s1 < s2. Метод
AnsicompareIC игнорирует разницу между кодами больших и малых букв.
В классе
Ansistring предусмотрено довольно много различных преобразований типов
данных:
int v = s.ToInt(); // перевод строки в целое число
int v = s.IntDef(int d); // то же самое, при ошибке в данных
//
выдаёт значение d по умолчанию
double v = s.ToDouble(); // перевод строки в вещественное число
s1 = InToHex(100,5); // (10)>(16), результат = "00064"
s1 = CurrToStr(1.5);
// результат = "1,5"
s1 = AnsiString(v); // перевод в строку данных любого типа
s1 = FloatToStrF(1993.14159265,формат,n1,n2)
В последнем
преобразовании значения первого аргумента в строку участвуют форматный
указатель, количество верных значащих цифр (n1) и общее количество
цифр в дробной части (n2).
Результаты
этого преобразования на конкретных данных приведены в
табл. 5.2.
Одним
из наиболее часто используемых методов преобразования ANSI-строк в
обычные строки С, заканчивающиеся нулевым байтом, является процедура
c_str(). Она применяется в тех случаях, когда вызываемая функция в
качестве аргумента ожидает указатель на массив типа char: printf("%s",s.c_str());
С помощью
методов Lowercase и Uppercase производится замена кодов латинских
букв на коды малых или больших букв.