Академический Документы
Профессиональный Документы
Культура Документы
ЛЕКЦИЯ 11
ОПЕРАЦИИ СО СТРОКАМИ______________________________________________________________ 1
Конструкторы класса CString______________________________________________________________ 1
Функции класса CString __________________________________________________________________ 2
Пример использования функций класса CString ______________________________________________ 2
ОПЕРАЦИИ СО СТРОКАМИ
Если вы программировали на Бейсике или Паскале, вы знаете, как просто в этих языках работать со
строками. С другой стороны, функции работы со строками, заканчивающимися нулем, унаследованные
языком C++ из С, предоставляют не наилучший механизм работы с ними. Желание предоставить про-
граммистам простой и удобный способ работы со строками привело разработчиков MFC к созданию клас-
са CString.
Класс CString не имеет базового класса. Он состоит из последовательности символов переменной
длины и предоставляет функции и операторы, использующие синтаксис, сходный с реализованным в Бей-
сике. Тип символов, составляющих последовательность, объявлен как TCHAR. Это означает, что, если в
вашей программе определен символ _UNICODE, тип символов будет wchar_t ("широкие" символы, для
размещения которых требуется 16 бит). В противном случае тип символов определен как char (обычный 8-
битовый тип).
Объекты CString имеют следующие характеристики:
они могут увеличиваться в результате выполнения операции конкатенации;
вы можете представлять их себе как строки, а не как указатели на строки;
вы можете свободно передавать CString-объекты параметрам функций, имеющим тип const char*
или LPCTSTR;
оператор преобразования типа имеет возможность получить прямой доступ к символам, хранимым в
объекте, как к массиву символов (т.е. как к С-строке).
Если возможно, распределяйте память для объектов CString в стеке, а не в хипе. Это приводит к эко-
номии памяти и упрощает передачу параметров. Класс помогает вам экономить память, разрешая двум
строкам разделять один и тот же буфер для хранения символов. Однако если вы попытаетесь изменить
содержимое буфера непосредственно (не используя MFC), вы можете непреднамеренно изменить обе
строки. В связи с этим класс CString предоставляет два метода: LockBuffer ( ) и UnlockBuffег ( ), чтобы
защитить ваши данные. Когда вы вызываете метод LockBuffer ( ), вы создаете копию строки, хранящейся
в объекте, и устанавливаете счетчик ссылок равным -1, что приведёт к "блокированию" доступа к буферу.
Пока доступ к буферу блокирован, ни один строковый объект не может ссылаться на данные в нем, и сам
блокированный строковый объект не может ссылаться на другой строковый объект. По окончании работы
с данными вызовите метод UnlockBuffer ( ), чтобы установить значение счетчика ссылок, равным 1.