Строки — это объекты, которые представляют последовательности символов. Строка символов в стиле C возникла в языке C и продолжает поддерживаться в C ++.
-
Эта строка на самом деле является одномерным массивом символов, который заканчивается нулевым символом ‘\ 0’.
-
Строка с нулевым символом в конце содержит символы, которые составляют строку, за которой следует ноль.
Эта строка на самом деле является одномерным массивом символов, который заканчивается нулевым символом ‘\ 0’.
Строка с нулевым символом в конце содержит символы, которые составляют строку, за которой следует ноль.
Вот простой пример массива символов.
char word[12] = { 'H', 'e', 'l', 'l', 'o', ' ', 'W', 'o', 'r', 'l', 'd', '\0' };
Следующее — другой способ представить это.
char word[] = "Hello, World";
Библиотека Microsoft Foundation Class (MFC) предоставляет класс для управления строкой, называемый CString . Ниже приведены некоторые важные особенности CString.
-
CString не имеет базового класса.
-
Объект CString состоит из последовательности символов переменной длины.
-
CString предоставляет функции и операторы, используя синтаксис, аналогичный синтаксису Basic.
-
Операторы конкатенации и сравнения вместе с упрощенным управлением памятью упрощают использование объектов CString, чем обычные символьные массивы.
CString не имеет базового класса.
Объект CString состоит из последовательности символов переменной длины.
CString предоставляет функции и операторы, используя синтаксис, аналогичный синтаксису Basic.
Операторы конкатенации и сравнения вместе с упрощенным управлением памятью упрощают использование объектов CString, чем обычные символьные массивы.
Вот конструктор CString.
Sr.No. | Метод и описание |
---|---|
1 |
CString Создает объекты CString различными способами. |
CString
Создает объекты CString различными способами.
Вот список методов массива —
Sr.No. | Метод и описание |
---|---|
1 |
GetLength Возвращает количество символов в объекте CString. |
2 |
Пустой Проверяет, содержит ли объект CString символы. |
3 |
пустой Заставляет строку иметь длину 0. |
4 |
GetAt Возвращает символ в указанной позиции. |
5 |
Установлен на Устанавливает символ в указанной позиции. |
GetLength
Возвращает количество символов в объекте CString.
Пустой
Проверяет, содержит ли объект CString символы.
пустой
Заставляет строку иметь длину 0.
GetAt
Возвращает символ в указанной позиции.
Установлен на
Устанавливает символ в указанной позиции.
Вот список методов сравнения —
Sr.No. | Метод и описание |
---|---|
1 |
сравнить Сравнивает две строки (с учетом регистра). |
2 |
CompareNoCase Сравнивает две строки (без учета регистра). |
сравнить
Сравнивает две строки (с учетом регистра).
CompareNoCase
Сравнивает две строки (без учета регистра).
Вот список методов извлечения —
Sr.No. | Метод и описание |
---|---|
1 |
средний Извлекает среднюю часть строки (как функция Basic MID $). |
2 |
Оставил Извлекает левую часть строки (как функция Basic LEFT $). |
3 |
Правильно Извлекает правую часть строки (как функция Basic RIGHT $). |
4 |
SpanIncluding Извлекает символы из строки, которые находятся в заданном наборе символов. |
5 |
SpanExcluding Извлекает символы из строки, которых нет в данном наборе символов. |
средний
Извлекает среднюю часть строки (как функция Basic MID $).
Оставил
Извлекает левую часть строки (как функция Basic LEFT $).
Правильно
Извлекает правую часть строки (как функция Basic RIGHT $).
SpanIncluding
Извлекает символы из строки, которые находятся в заданном наборе символов.
SpanExcluding
Извлекает символы из строки, которых нет в данном наборе символов.
Вот список методов конвертации.
Sr.No. | Метод и описание |
---|---|
1 |
MakeUpper Преобразует все символы в этой строке в символы верхнего регистра. |
2 |
MakeLower Преобразует все символы в этой строке в строчные буквы. |
3 |
MakeReverse Меняет символы в этой строке. |
4 |
Формат Отформатируйте строку, как это делает sprintf. |
5 |
TrimLeft Обрезать ведущие пробельные символы из строки. |
6 |
TrimRight Обрезать завершающие пробелы в строке. |
MakeUpper
Преобразует все символы в этой строке в символы верхнего регистра.
MakeLower
Преобразует все символы в этой строке в строчные буквы.
MakeReverse
Меняет символы в этой строке.
Формат
Отформатируйте строку, как это делает sprintf.
TrimLeft
Обрезать ведущие пробельные символы из строки.
TrimRight
Обрезать завершающие пробелы в строке.
Вот список методов поиска.
Sr.No. | Метод и описание |
---|---|
1 |
найти Находит символ или подстроку внутри большей строки. |
2 |
ReverseFind Находит символ внутри большей строки; начинается с конца. |
3 |
FindOneOf Находит первый соответствующий символ из набора. |
найти
Находит символ или подстроку внутри большей строки.
ReverseFind
Находит символ внутри большей строки; начинается с конца.
FindOneOf
Находит первый соответствующий символ из набора.
Вот список методов доступа к буферу.
Sr.No. | Метод и описание |
---|---|
1 |
GetBuffer Возвращает указатель на символы в CString. |
2 |
GetBufferSetLength Возвращает указатель на символы в CString, усеченный до указанной длины. |
3 |
ReleaseBuffer Освобождает контроль над буфером, возвращаемым GetBuffer |
4 |
FreeExtra Удаляет любые издержки этого строкового объекта, освобождая любую дополнительную память, ранее выделенную для строки. |
5 |
LockBuffer Отключает подсчет ссылок и защищает строку в буфере. |
6 |
UnlockBuffer Включает подсчет ссылок и освобождает строку в буфере. |
GetBuffer
Возвращает указатель на символы в CString.
GetBufferSetLength
Возвращает указатель на символы в CString, усеченный до указанной длины.
ReleaseBuffer
Освобождает контроль над буфером, возвращаемым GetBuffer
FreeExtra
Удаляет любые издержки этого строкового объекта, освобождая любую дополнительную память, ранее выделенную для строки.
LockBuffer
Отключает подсчет ссылок и защищает строку в буфере.
UnlockBuffer
Включает подсчет ссылок и освобождает строку в буфере.
Вот список специфичных для Windows методов.
Sr.No. | Метод и описание |
---|---|
1 |
AllocSysString Выделяет BSTR из данных CString. |
2 |
SetSysString Устанавливает существующий объект BSTR с данными из объекта CString. |
3 |
LoadString Загружает существующий объект CString из ресурса Windows CE. |
AllocSysString
Выделяет BSTR из данных CString.
SetSysString
Устанавливает существующий объект BSTR с данными из объекта CString.
LoadString
Загружает существующий объект CString из ресурса Windows CE.
Ниже приведены различные операции над объектами CString.
Создать строку
Вы можете создать строку, используя строковый литерал или создав экземпляр класса CString.
BOOL CMFCStringDemoDlg::OnInitDialog() { CDialogEx::OnInitDialog(); // Set the icon for this dialog. The framework does this automatically // when the application's main window is not a dialog SetIcon(m_hIcon, TRUE); // Set big icon SetIcon(m_hIcon, FALSE); // Set small icon CString string1 = _T("This is a string1"); CString string2("This is a string2"); m_strText.Append(string1 + L"\n"); m_strText.Append(string2); UpdateData(FALSE); return TRUE; // return TRUE unless you set the focus to a control }
Когда приведенный выше код скомпилирован и выполнен, вы увидите следующий вывод.
Пустой строки
Вы можете создать пустую строку с помощью литерала пустой строки или с помощью метода CString :: Empty (). Вы также можете проверить, является ли строка пустой или нет, используя логическое свойство isEmpty.
BOOL CMFCStringDemoDlg::OnInitDialog() { CDialogEx::OnInitDialog(); // Set the icon for this dialog. The framework does this automatically // when the application's main window is not a dialog SetIcon(m_hIcon, TRUE); // Set big icon SetIcon(m_hIcon, FALSE); // Set small icon CString string1 = _T(""); CString string2; string2.Empty(); if(string1.IsEmpty()) m_strText.Append(L"String1 is empty\n"); else m_strText.Append(string1 + L"\n"); if(string2.IsEmpty()) m_strText.Append(L"String2 is empty"); else m_strText.Append(string2); UpdateData(FALSE); return TRUE; // return TRUE unless you set the focus to a control }
Когда приведенный выше код скомпилирован и выполнен, вы увидите следующий вывод.
Конкатенация строк
Чтобы объединить две или более строк, вы можете использовать оператор + для объединения двух строк или метод CString :: Append ().
BOOL CMFCStringDemoDlg::OnInitDialog() { CDialogEx::OnInitDialog(); // Set the icon for this dialog. The framework does this automatically // when the application's main window is not a dialog SetIcon(m_hIcon, TRUE); // Set big icon SetIcon(m_hIcon, FALSE); // Set small icon //To concatenate two CString objects CString s1 = _T("This "); // Cascading concatenation s1 += _T("is a "); CString s2 = _T("test"); CString message = s1; message.Append(_T("big ") + s2); // Message contains "This is a big test". m_strText = L"message: " + message; UpdateData(FALSE); return TRUE; // return TRUE unless you set the focus to a control }
Когда приведенный выше код скомпилирован и выполнен, вы увидите следующий вывод.
Длина строки
Чтобы найти длину строки, вы можете использовать метод CString :: GetLength (), который возвращает количество символов в объекте CString.
BOOL CMFCStringDemoDlg::OnInitDialog() { CDialogEx::OnInitDialog(); // Set the icon for this dialog. The framework does this automatically // when the application's main window is not a dialog SetIcon(m_hIcon, TRUE); // Set big icon SetIcon(m_hIcon, FALSE); // Set small icon CString string1 = _T("This is string 1"); int length = string1.GetLength(); CString strLen; strLen.Format(L"\nString1 contains %d characters", length); m_strText = string1 + strLen; UpdateData(FALSE); return TRUE; // return TRUE unless you set the focus to a control }
Когда приведенный выше код скомпилирован и выполнен, вы увидите следующий вывод.
Сравнение строк
Для сравнения двух строковых переменных вы можете использовать оператор ==
BOOL CMFCStringDemoDlg::OnInitDialog() { CDialogEx::OnInitDialog(); // Set the icon for this dialog. The framework does this automatically // when the application's main window is not a dialog SetIcon(m_hIcon, TRUE); // Set big icon SetIcon(m_hIcon, FALSE); // Set small icon CString string1 = _T("Hello"); CString string2 = _T("World"); CString string3 = _T("MFC Tutorial"); CString string4 = _T("MFC Tutorial"); if (string1 == string2) m_strText = "string1 and string1 are same\n"; else m_strText = "string1 and string1 are not same\n"; if (string3 == string4) m_strText += "string3 and string4 are same"; else m_strText += "string3 and string4 are not same"; UpdateData(FALSE); return TRUE; // return TRUE unless you set the focus to a control }
Когда приведенный выше код скомпилирован и выполнен, вы увидите следующий вывод.