Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Примечание.
Библиотека классов Microsoft Foundation (MFC) и активная библиотека шаблонов (ATL) продолжают поддерживаться. Однако мы больше не добавляем функции или обновляем документацию.
Visual C++ предоставляет несколько способов управления строковыми данными:
Обработка строк для работы с строками в стиле
NULLCФункции API Win32 для управления строками
Класс
CStringTMFC, предоставляющий гибкие, изменяемые объекты строкКласс класса
CStringT, который предоставляет объект строки, независимый от MFC, с той же функциональностью, что иCString
Почти все программы работают со строковыми данными. Класс MFC CString часто является лучшим решением для гибкой обработки строк. Начиная с версии 7.0, CString можно использовать в программах, независимых от MFC или MFC. Библиотека времени выполнения и CString строки поддержки, содержащие многобайтовые (широкие) символы, как и в программировании Юникода или MBCS.
В этой статье описываются службы общего назначения, предоставляемые библиотекой классов, связанные с обработкой строк. В этой статье рассматриваются следующие темы:
CStringT Класс класса обеспечивает поддержку управления строками. Он предназначен для замены и расширения функциональных возможностей, предоставляемых пакетом строки библиотеки времени выполнения C. Класс CString предоставляет функции-члены и операторы для упрощенной обработки строк, аналогичных тем, которые найдены в Basic. Класс также предоставляет конструкторы и операторы для создания, назначения и сравнения CStringтипов строковых данных C++ и S++. Так как CString не является производным CObjectот, можно использовать CString объекты независимо от большинства библиотек классов Microsoft Foundation (MFC).
CString объекты соответствуют семантике значений. CString Объект представляет уникальное значение. Подумайте о CString фактической строке, а не как указатель на строку.
CString Объект представляет последовательность переменной числа символов.
CString объекты можно рассматривать как массивы символов.
Юникод и MBCS обеспечивают переносимость
В MFC версии 3.0 и более поздних версиях MFC, включая CStringMFC, включен как для наборов символов Юникода, так и для многобайтовых наборов символов (MBCS). Эта поддержка упрощает написание переносимых приложений, которые можно создавать для символов Юникода или ANSI. Чтобы включить переносимость, каждый символ в CString объекте имеет тип TCHAR, который определяется как wchar_t если бы вы определили символ _UNICODE при сборке приложения или как char будто нет. Символ wchar_t имеет ширину 16 битов. MBCS включен при сборке с определенным символом _MBCS . Сам MFC создается с _MBCS помощью символа (для библиотек NAFX) или _UNICODE символа (для библиотек UAFX).
Примечание.
В CString примерах этого и сопроводительных статьях в строках отображаются литеральные строки, правильно отформатированные для переносимости Юникода, с помощью _T макроса, который преобразует литеральную строку в форму:
L"literal string"
Примечание.
который компилятор обрабатывает как строку Юникода. Например, приведенный ниже код
CString strName = _T("Name");
Примечание.
преобразуется как строка Юникода, если _UNICODE она определена или как строка ANSI, если нет. Дополнительные сведения см. в статье Поддержка Юникода и многобайтового набора символов (MBCS).
Объект CString может хранить до INT_MAX (2 147 483 647) символов. Тип TCHAR данных используется для получения или задания отдельных символов внутри CString объекта. В отличие от массивов символов, CString класс имеет встроенную возможность выделения памяти. Это позволяет CString объектам автоматически расти по мере необходимости (т. е. вам не нужно беспокоиться о росте CString объекта для размещения более длинных строк).
CStrings и const char указатели
Объект CString также может выступать как строка стиля C литерала (то PCXSTRже самое, что const char* и в Юникоде). Оператор CSimpleStringT::operator PCXSTR преобразования позволяет CString объектам свободно заменяться указателями символов в вызовах функций. Конструктор CString(LPCWSTR pszSrc) позволяет заменять указатели символов объектами CString .
Попытка сложить CString объекты не выполняется. При создании двух CString объектов, содержащих Chicago, например, символы хранятся Chicago в двух местах. (Это может быть не верно для будущих версий MFC, поэтому вы не должны зависеть от него.)
Примечание.
Используйте функции-члены CSimpleStringT::GetBufferCSimpleStringT::ReleaseBuffer , если необходимо напрямую получить доступ к CString символу, отличному от неконстантного указателя.
Примечание.
CStringT::AllocSysString
CStringT::SetSysString Используйте функции-члены для выделения и задания BSTR объектов, используемых в службе автоматизации (прежнее название — OLE Automation).
Примечание.
По возможности выделите CString объекты на кадре, а не на куче. Это экономит память и упрощает передачу параметров.
Класс CString не реализуется как класс коллекции библиотек классов Microsoft Foundation, хотя CString объекты, безусловно, могут храниться как элементы в коллекциях.
CString Подсчет ссылок
По состоянию на MFC версии 4.0 при CStringT копировании объектов класса MFC увеличивает число ссылок, а не копирует данные. Это делает передачу параметров по значению и возврату CString объектов по значению более эффективным. Эти операции приводят к вызову конструктора копирования, иногда несколько раз. Увеличение количества ссылок уменьшает затраты на эти распространенные операции и делает использование CString более привлекательным вариантом.
По мере уничтожения каждой копии количество ссылок в исходном объекте уменьшается. Исходный CString объект не уничтожается до тех пор, пока его число ссылок не уменьшается до нуля.
Вы можете использовать функции-члены CStringCSimpleStringT::LockBuffer и CSimpleStringT::UnlockBuffer отключить или включить подсчет ссылок.