Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этом разделе описаны следующие основные операции CString :
Class CString основан на шаблоне CStringTкласса.
CString— это .typedefCStringT Точнее, CString является явной специализациейtypedef, которая является общим способом использования шаблона класса CStringT для определения класса. Аналогичным образом определены классы CStringA и CStringW.
CString, CStringAи CStringW определены в atlstr.h.
CStringT определяется в cstringt.h.
CString, CStringAи CStringW каждый получает набор методов и операторов, определенных CStringT для использования со строковыми данными, которые они поддерживают. Некоторые методы дублируются и, в некоторых случаях, превышают строковые службы библиотек времени выполнения C.
Примечание. CString Это собственный класс. Для строкового класса, используемого в управляемом проекте C++/CLI, используйте System.String.
Создание объектов CString из стандартных строк литеральных строк C
Вы можете назначить строки CString литералов в стиле C так же, как можно назначить один CString объект другому.
Назначьте значение строки литерала C объекту
CString.CString myString = _T("This is a test");Назначьте значение одного
CStringобъекта другомуCStringобъекту.CString oldString = _T("This is a test"); CString newString = oldString;Содержимое
CStringобъекта копируется при назначении одногоCStringобъекта другому. Поэтому две строки не используют ссылку на фактические символы, составляющие строку. Дополнительные сведения об использованииCStringобъектов в качестве значений см. в разделе CString Semantics.Примечание.
Чтобы написать приложение, чтобы его можно было скомпилировать для Юникода или ANSI, строки литерала кода с помощью макроса _T. Дополнительные сведения см. в разделе Юникод и поддержка многобайтового набора символов (MBCS).
Доступ к отдельным символам в CString
Доступ к отдельным символам в CString объекте можно получить с помощью GetAt методов и SetAt методов. Кроме того, можно использовать элемент массива или подстрок, оператор ( [ ] ) вместо GetAt получения отдельных символов. (Это напоминает доступ к элементам массива по индексу, как в стандартных строках в стиле C.) Значения индекса для CString символов основаны на нулях.
Объединение двух объектов CString
Чтобы объединить два объекта, используйте операторы CString объединения (+ или +=), как показано ниже.
CString s1 = _T("This "); // Cascading concatenation
s1 += _T("is a ");
CString s2 = _T("test");
CString message = s1 + _T("big ") + s2;
// Message contains "This is a big test".
По крайней мере один аргумент для операторов объединения (+ или +=) должен быть CString объектом, но для другого аргумента можно использовать константную символьную строку (например, "big"x char ).
Сравнение объектов CString
Метод Compare и оператор == для CString них эквивалентны.
Compare, оператор==, а CompareNoCase также учитывается MBCS и Юникод; CompareNoCase также не учитывает регистр. Метод CollateCString является языковым стандартом и часто медленнее Compare. Используйте Collate только место, где необходимо соблюдать правила сортировки, указанные текущим языковым стандартом.
В следующей таблице показаны доступные функции сравнения CString и их эквивалентные функции Юникод/MBCS-переносимые в библиотеке времени выполнения C.
| Функция CString | Функция MBCS | Функция Юникода |
|---|---|---|
Compare |
_mbscmp |
wcscmp |
CompareNoCase |
_mbsicmp |
_wcsicmp |
Collate |
_mbscoll |
wcscoll |
Шаблон CStringT класса определяет реляционные операторы (<=, <=, =, >>== и !=), которые доступны для использованияCString. Вы можете сравнить два CStrings оператора с помощью этих операторов, как показано в следующем примере.
CString s1(_T("Tom"));
CString s2(_T("Jerry"));
ASSERT(s2 < s1);
Преобразование объектов CString
Сведения о преобразовании объектов CString в другие типы строк см. в разделе "Практическое руководство. Преобразование между различными типами строк".
Использование CString с wcout
Чтобы использовать CString с wcout объектом, необходимо явно привести объект к const wchar_t* объекту, как показано в следующем примере:
CString cs("meow");
wcout << (const wchar_t*) cs << endl;
Без приведения cs обрабатывается как void* адрес объекта и wcout печатается. Это поведение вызвано тонким взаимодействием между вычетом аргументов шаблона и разрешением перегрузки, которые сами по себе правильны и соответствуют стандарту C++.
См. также
Строки (ATL/MFC)
Класс CStringT
Специализация шаблонов
Практическое руководство. Преобразование различных типов строк