Учебники

MFC — Струны

Строки — это объекты, которые представляют последовательности символов. Строка символов в стиле 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
}

Когда приведенный выше код скомпилирован и выполнен, вы увидите следующий вывод.