В C++Builder тип строк AnsiString реализован как класс, объявленный в файле vcl/dstring.h и аналогичный типу длинных строк в Delphi – это строки с нулевым символом в конце. При объявлении переменные типа AnsiString инициализируются пустыми строками.
Для AnsiString определены операции отношения ==, !=, >, <, >=, <=. Сравнение производится с учетом регистра. Сравниваются коды символов, начиная с первого, и если очередные символы не одинаковы, строка, содержащая символ с меньшим кодом считается меньше. Если все символы совпали, но одна строка длиннее и в ней имеются еще символы, то она считается больше, чем более короткая.
Для AnsiString определены операции присваивания =, += и операция склеивания строк (конкатенации) +. Определена также операция индексации []. Индексы начинаются с 1. Например, если S1 - "Привет", то S1[1] вернет 'П', S1[2] вернет 'р' и т.д.
Основные методы класса AnsiString (в описаниях методов через S1 обозначена строка, метод которой используется):
Метод | Синтаксис / Описание |
---|---|
AnsiCompare | int __fastcall AnsiCompare(const AnsiString& rhs) const Сравнивает данную строку S1 с rhs с учетом регистра. Сравнение зависит от текущих установок Windows и может отличаться от сравнения, осуществляемого операциями сравнения. Возвращает значение > 0 при S1 > rhs, значение < 0 при S1 < rhs и значение 0 при S1 = rhs |
AnsiCompareIC | int __fastcall AnsiCompareIC(const AnsiString& rhs) const Осуществляет сравнение, аналогичное AnsiCompare, но без учета регистра |
AnsiLastChar | char* __fastcallAnsiLastChar() const Возвращает указатель на последний значащий символ. Поддерживает многобайтные символы |
AnsiPos | int __fastcall AnsiPos(const AnsiString& subStr) const Возвращает индекс первого символа первого вхождения subStr в S1. Индексы начинаются с 1. Если subStr не содержится в S1, возвращается 0. В отличие от Pos поддерживает 1 многобайтные символы |
c_str | char* __fastcallc_str()const Возвращает указатель на строку с нулевым символом в конце, содержащую те же символы, что в AnsiString |
CurrToStr | static AnsiString __fastcall CurrToStr(Currency value) Преобразует значение value типа Currency в строку |
CurrToStrF | static AnsiString __fastcall CurrToStrF(Currency value, TstringFloatFormat format, int digits) Преобразует значение value типа Currency в строку, используя указанный формат преобразования чисел с плавающей запятой. Параметр определяет задаваемое число разрядов. Функция соответствует функции CurrToStrF с заданной точностью 19 разрядов |
Delete | void __fastcall Delete(int index, int count) Удаляет из строки, начиная с позиции index число символов, равное count |
FloatToStrF | static AnsiString __fastcall FloatToStrF(long double value, TStringFloatFormat format, int precision, int digits) Преобразует значение value с плавающей запятой в строку, используя указанный формат. Параметры precision и digits задают точность и число разрядов. Точность должна задаваться не более 7 для типа float, не более 15 для double и не более 18 для Extended. Число разрядов зависит от выбранного формата |
Format | static AnsiString __fastcall Format(const AnsiString& format, const TVarRec *args, int size) Формирует строку, используя строку формата format и массив аргументов args |
FormatFloat | static AnsiString __fastcall FormatFloat(const ArisiString& format, const long double& value) Преобразует значение value с плавающей запятой в строку, используя указанный формат format |
Insert | void __fastcall Insert(const AnsiString& str, int index) Вставляет в строку подстроку str, начиная с индекса index |
IntToHex | static AnsiString __fastcall IntToHex(int value, int digits) Преобразует значение value в строку, содержащую минимум digits шестнадцатеричных цифр |
IsDelimiter | bool __fastcall IsDelimiter(const AnsiString& delimiters, int index) const Возвращает true, если символ с индексом index является одним из разделителей, указанных в строке delimiters. Работает и для многобайтных символов |
IsEmpty | bool __fastcall IsEmpty() const Возвращает true, если строка пустая |
Length | int __fastcall Length() const Возвращает число символов в строке |
LowerCase | AnsiString __fastcall LowerCase() const Возвращает строку, в которой все символы приведены к нижнему регистру. Не влияет на исходную строку |
Pos | int __fastcall Pos(const AnsiString& subStr) const Возвращает индекс первого символа первого вхождения subStr в S1. Индексы начинаются с 1. Если subStr не содержится в S1, возвращается 0. В отличие от AnsiPos не поддерживает многобайтные символы |
SetLength | void __fastcall SetLength(int newLength) Усекает строку до newLength символов. Если исходная строка короче, то она не увеличивается |
SubString | AnsiString __fastcall SubString(int index, int count) const Возвращает подстроку, начинающуюся с символа в позиции index и содержащую count символов |
ToDouble | double __fastcall ToDouble() const Преобразует строку в число с плавающей запятой. Если строка не соответствует формату числа с плавающей запятой, генерируется исключение EConvertError |
Tolnt | int __fastcall ToInt() const Преобразует строку в целое число. Если строка не соответствует формату целого числа, генерируется исключение EConvertError |
ToIntDef | int __fastcall ToIntDef(int defaultValue) const Преобразует строку в целое число. Если строка не соответствует формату целого числа, возвращается значение по умолчанию defaultValue |
Trim | AnsiString __fastcall Trim() const Возвращает строку, соответствующую исходной, но без пробельных символов до и после значащих символов |
TrimLeft | AnsiString __fastcall TrimLeft() const Возвращает строку, соответствующую исходной, но без начальных пробельных символов |
TrimRight | AnsiString __fastcall TrimRight() const Возвращает строку, соответствующую исходной, но без заключительных пробельных символов |
Unique | void __fastcall Unique() Делает строку уникальной, т.е. устанавливает число ссылок на нее (refcnt) в 1. Таким образом, на нее ссылается только один объект |
UpperCase | AnsiString __fastcall UpperCase() const Возвращает строку, в которой все символы приведены к верхнему регистру. Не влияет на исходную строку |
WideChar | wchar_t* __fastcall WideChar(wchar_t* dest, int destSize) const Преобразует строку в массив символов dest типа wchar_t и возвращает указатель на этот массив |
WideCharBufSize | int __fastcall WideCharBufSize() const Возвращает размер буфера, требуемого для функции WideChar |