Класс FarString

Класс FarString представляет собой компактную и эффективную реализацию класса "строка ASCII-символов". Использование этого класса влечет существенно меньшие затраты по объему кода плагина, чем, например, использование класса std::string из стандартной библиотеки STL. Класс FarString реализован с использованием механизма подсчета ссылок, поэтому операции копирования строки влекут за собой минимальные накладные расходы. Это, в частности, делает оправданным возвращение из функций экземпляров FarString по значению. Кроме того, FarString использует принцип "выделения памяти с запасом", позволяющий увеличить эффективность операций конкатенации строк.

Методы

FarString()

Конструктор по умолчанию. FarString инициализируется пустой строкой.

FarString (const char *text)

Конструктор, инициализирующий FarString указанной null-terminated строкой. Если text = NULL, инициализирует FarString пустой строкой.

FarString (const char *text, int length)

Конструктор, инициализирующий FarString последовательностью символов указанной длины. text не может быть равен NULL.

FarString (char c, int nCount)

Конструктор, создающий строку из nCount копий символа c.

FarString (const FarString &str)

Конструктор копирования.

const FarString &operator= (const FarString &rhs)

const FarString &operator= (const char *text)

const FarString &operator= (char ch)

Оператор присваивания.

operator const char*() const

const char *c_str() const

Оператор и функция для преобразования FarString в стандартную C-строку. Неявное преобразование поддерживается только для константных строк; если необходимо передать FarString в функцию, принимающую неконстантый char *, следует использовать метод GetBuffer().

const char *data() const

Метод для преобразования FarString в C-строку. В отличие от метода c_str(), для строки нулевой длины возвращает NULL.

bool operator== (const FarString &rhs) const

Оператор сравнения. Помимо этого оператора, FarString реализует полный набор операторов сравнения (==, !=, <, >, <=, >=) для всех комбинаций FarString и const char *.

int Compare (const char *Str) const

int Compare (const char *Str, size_t nLength) const

Функции для сравнения строк с учетом регистра. Возвращают положительное значение, если строка, для которой вызван метод, больше (идет позже в лексикографическом порядке), чем строка Str; отрицательное, если строка меньше Str, или 0 в случае равенства.

int CompareNoCase (const char *Str) const

int CompareNoCase (const char *Str, size_t nLength) const

Функции, аналогичные Compare(), но осуществляющие сравнение без учета регистра. Поскольку для сравнения используется функция CompareString() из Win32 API, русские строки также обрабатываются корректно.

char *GetBuffer (int nLength = -1)

Получает указатель на внутренний буфер строки. Указатель, возвращаемый этим методом, можно передавать в функции, модифицирующие строку; при этом гарантируется, что модифицирована будет только та копия строки, для которой был вызван GetBuffer(). Если функция, модифицирующая строку, увеличит ее длину, то вы можете указать максимальную длину, которую строка будет иметь после модификации, в параметре nLength.

Если функция, модифицирующая строку, изменяет также ее длину, после ее вызова необходимо вызвать функцию ReleaseBuffer() для корректировки длины строки, кэшируемой внутри класса.

void ReleaseBuffer (int newLength = -1)

Выполняет корректировку длины строки после того, как она была модифицирована внешней функцией. Если новая длина строки точно известна, можно передать ее в параметре newLength. Если newLength не указана, длина строки будет определена автоматически при помощи функции strlen().

char operator[] (int index) const

char& operator[] (int index)

Получает символ в строке по указанному индексу. Корректность индекса не проверяется. Второй приведенный вариант оператора позволяет модифицировать символ строки по указанному индексу.

void SetText (const char *text, int length)

Присваивает объекту FarString последовательность символов указанной длины. Если text равен NULL, присваивает объекту пустую строку.

int Length() const

Возвращает длину строки.

bool IsEmpty() const

Возвращает true, если строка имеет нулевую длину, и false во всех остальных случаях.

void SetLength (size_t newLength)

Расширяет или обрезает строку, с сохранением содержимого. Если размер строки увеличивается (newLength больше текущей длины строки), содержимое буфера после текущего конца строки не определено.

void Empty()

Очищает строку (устанавливает ее длину в 0).

FarString &operator += (const FarString &str)

FarString &operator += (const char *s)

FarString &operator += (char c)

Добавляет к строке указанную последовательность символов (заданную в виде FarString или null-terminated) или один символ.

FarString Mid (int nFirst, int nCount) const

FarString Mid (int nFirst) const

Возвращает фрагмент строки, начиная с указанного символа. Вариант функции с двумя параметрами возвращает фрагмент указанной длины, с одним параметром - фрагмент с указанного символа и до конца строки.

FarString Left(int nCount) const

Возвращает фрагмент из первых nCount символов строки.

FarString Right (size_t nCount) const

Возвращает фрагмент из последних nCount символов строки.

int Insert (int nIndex, const FarString &Str)

int Insert (int nIndex, const char *Str)

int Insert (int nIndex, const char *Str, size_t nLength)

Вставляет указанную последовательность символов в середину строки, начиная с указанного индекса. Последовательность символов может быть задана в виде FarString, NULL-terminated строки или массива символов с известной длиной. Возвращает количество вставленных символов.

int Delete (int nIndex, int nCount = 1)

Удаляет из середины строки последовательность символов указанной длины, начиная с указанного индекса. Возвращает длину строки после удаления.

int IndexOf (char c) const

Возвращает индекс в строке указанного символа, либо -1, если строка не содержит указанного символа.

int LastIndexOf (char c) const

Возвращает индекс последнего вхождения указанного символа в строку, либо -1, если строка не содержит указанного символа.

FarString ToOEM() const

FarString ToANSI() const

Возвращает копию строки, преобразованную в набор символов OEM или ANSI, соответственно.

void MakeUpper()

void MakeLower()

Преобразует строку к верхнему или нижнему региcтру, соответственно. Преобразование осуществляется на месте, без создания копии строки.

void Trim()

Обрезает начальные и конечные пробелы в строке.

void TrimLeft()

Обрезает начальные пробелы в строке.

void TrimRight()

Обрезает конечные пробелы в строке.