MFC - Strings

Stringssão objetos que representam sequências de caracteres. A cadeia de caracteres do estilo C originou-se na linguagem C e continua a ser compatível com C ++.

  • Esta string é na verdade uma matriz unidimensional de caracteres que termina com um caractere nulo '\ 0'.

  • Uma string terminada em nulo contém os caracteres que compõem a string seguida por um nulo.

Aqui está um exemplo simples de matriz de caracteres.

char word[12] = { 'H', 'e', 'l', 'l', 'o', ' ', 'W', 'o', 'r', 'l', 'd', '\0' };

A seguir está outra maneira de representá-lo.

char word[] = "Hello, World";

A biblioteca Microsoft Foundation Class (MFC) fornece uma classe para manipular string chamada CString. A seguir estão alguns recursos importantes do CString.

  • CString não tem uma classe base.

  • Um objeto CString consiste em uma sequência de caracteres de comprimento variável.

  • CString fornece funções e operadores usando uma sintaxe semelhante à do Basic.

  • Os operadores de concatenação e comparação, junto com o gerenciamento de memória simplificado, tornam os objetos CString mais fáceis de usar do que os arrays de caracteres comuns.

Aqui está o construtor de CString.

Sr. Não. Método e Descrição
1

CString

Constrói objetos CString de várias maneiras

Aqui está uma lista de métodos de array -

Sr. Não. Método e Descrição
1

GetLength

Retorna o número de caracteres em um objeto CString.

2

IsEmpty

Testa se um objeto CString não contém caracteres.

3

Empty

Força uma string a ter comprimento 0.

4

GetAt

Retorna o caractere em uma posição especificada.

5

SetAt

Define um caractere em uma posição especificada.

Aqui está uma lista de métodos de comparação -

Sr. Não. Método e Descrição
1

Compare

Compara duas strings (diferencia maiúsculas de minúsculas).

2

CompareNoCase

Compara duas strings (não diferencia maiúsculas de minúsculas).

Aqui está uma lista de métodos de extração -

Sr. Não. Método e Descrição
1

Mid

Extrai a parte do meio de uma string (como a função MID $ básica).

2

Left

Extrai a parte esquerda de uma string (como a função LEFT $ básica).

3

Right

Extrai a parte direita de uma string (como a função RIGHT $ básica).

4

SpanIncluding

Extrai os caracteres da string, que estão no conjunto de caracteres fornecido.

5

SpanExcluding

Extrai os caracteres da string que não estão no conjunto de caracteres fornecido.

Aqui está uma lista de métodos de conversão.

Sr. Não. Método e Descrição
1

MakeUpper

Converte todos os caracteres nesta string em caracteres maiúsculos.

2

MakeLower

Converte todos os caracteres nesta string em caracteres minúsculos.

3

MakeReverse

Inverte os caracteres nesta string.

4

Format

Formate a string como sprintf faz.

5

TrimLeft

Apare os caracteres de espaço em branco iniciais da string.

6

TrimRight

Apare os caracteres de espaço em branco à direita da string.

Aqui está uma lista de métodos de pesquisa.

Sr. Não. Método e Descrição
1

Find

Encontra um caractere ou substring dentro de uma string maior.

2

ReverseFind

Encontra um caractere dentro de uma string maior; começa do fim.

3

FindOneOf

Encontra o primeiro caractere correspondente de um conjunto.

Aqui está uma lista de métodos de acesso ao buffer.

Sr. Não. Método e Descrição
1

GetBuffer

Retorna um ponteiro para os caracteres em CString.

2

GetBufferSetLength

Retorna um ponteiro para os caracteres em CString, truncando para o comprimento especificado.

3

ReleaseBuffer

Libera o controle do buffer retornado por GetBuffer

4

FreeExtra

Remove qualquer sobrecarga deste objeto de string, liberando qualquer memória extra previamente alocada para a string.

5

LockBuffer

Desativa a contagem de referência e protege a string no buffer.

6

UnlockBuffer

Habilita a contagem de referência e libera a string no buffer.

Aqui está uma lista de métodos específicos do Windows.

Sr. Não. Método e Descrição
1

AllocSysString

Aloca um BSTR de dados CString.

2

SetSysString

Define um objeto BSTR existente com dados de um objeto CString.

3

LoadString

Carrega um objeto CString existente de um recurso do Windows CE.

A seguir estão as diferentes operações em objetos CString -

Criar String

Você pode criar uma string usando uma string literal ou criando uma instância da classe 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
}

Quando o código acima for compilado e executado, você verá a seguinte saída.

String vazia

Você pode criar uma string vazia usando um literal de string vazia ou usando o método CString :: Empty (). Você também pode verificar se uma string está vazia ou não usando a propriedade booleana 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
}

Quando o código acima for compilado e executado, você verá a seguinte saída.

String Concatenation

Para concatenar duas ou mais strings, você pode usar o operador + para concatenar duas strings ou um método 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
}

Quando o código acima for compilado e executado, você verá a seguinte saída.

Comprimento da corda

Para encontrar o comprimento da string, você pode usar o método CString :: GetLength (), que retorna o número de caracteres em um objeto 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
}

Quando o código acima for compilado e executado, você verá a seguinte saída.

Comparação de cordas

Para comparar duas variáveis ​​de strings, você pode usar o operador ==

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
}

Quando o código acima for compilado e executado, você verá a seguinte saída.