MFC - Cordes

Stringssont des objets qui représentent des séquences de caractères. La chaîne de caractères de style C provient du langage C et continue d'être prise en charge dans C ++.

  • Cette chaîne est en fait un tableau unidimensionnel de caractères qui se termine par un caractère nul '\ 0'.

  • Une chaîne terminée par un caractère nul contient les caractères qui composent la chaîne suivis d'un nul.

Voici l'exemple simple de tableau de caractères.

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

Voici une autre façon de le représenter.

char word[] = "Hello, World";

La bibliothèque Microsoft Foundation Class (MFC) fournit une classe pour manipuler la chaîne appelée CString. Voici quelques fonctionnalités importantes de CString.

  • CString n'a pas de classe de base.

  • Un objet CString se compose d'une séquence de caractères de longueur variable.

  • CString fournit des fonctions et des opérateurs utilisant une syntaxe similaire à celle de Basic.

  • Les opérateurs de concaténation et de comparaison, ainsi que la gestion simplifiée de la mémoire, rendent les objets CString plus faciles à utiliser que les tableaux de caractères ordinaires.

Voici le constructeur de CString.

Sr.No. Méthode et description
1

CString

Construit des objets CString de différentes manières

Voici une liste des méthodes Array -

Sr.No. Méthode et description
1

GetLength

Renvoie le nombre de caractères dans un objet CString.

2

IsEmpty

Teste si un objet CString ne contient aucun caractère.

3

Empty

Force une chaîne à avoir une longueur de 0.

4

GetAt

Renvoie le caractère à une position spécifiée.

5

SetAt

Définit un caractère à une position spécifiée.

Voici une liste de méthodes de comparaison -

Sr.No. Méthode et description
1

Compare

Compare deux chaînes (sensible à la casse).

2

CompareNoCase

Compare deux chaînes (insensible à la casse).

Voici une liste des méthodes d'extraction -

Sr.No. Méthode et description
1

Mid

Extrait la partie centrale d'une chaîne (comme la fonction Basic MID $).

2

Left

Extrait la partie gauche d'une chaîne (comme la fonction Basic LEFT $).

3

Right

Extrait la partie droite d'une chaîne (comme la fonction Basic RIGHT $).

4

SpanIncluding

Extrait les caractères de la chaîne, qui sont dans le jeu de caractères donné.

5

SpanExcluding

Extrait les caractères de la chaîne qui ne sont pas dans le jeu de caractères donné.

Voici une liste des méthodes de conversion.

Sr.No. Méthode et description
1

MakeUpper

Convertit tous les caractères de cette chaîne en caractères majuscules.

2

MakeLower

Convertit tous les caractères de cette chaîne en caractères minuscules.

3

MakeReverse

Inverse les caractères de cette chaîne.

4

Format

Formatez la chaîne comme le fait sprintf.

5

TrimLeft

Coupez les premiers caractères d'espace blanc de la chaîne.

6

TrimRight

Coupez les caractères d'espacement de fin de la chaîne.

Voici une liste des méthodes de recherche.

Sr.No. Méthode et description
1

Find

Recherche un caractère ou une sous-chaîne dans une chaîne plus grande.

2

ReverseFind

Recherche un caractère dans une chaîne plus grande; commence par la fin.

3

FindOneOf

Recherche le premier caractère correspondant d'un ensemble.

Voici une liste des méthodes d'accès au tampon.

Sr.No. Méthode et description
1

GetBuffer

Renvoie un pointeur sur les caractères de la CString.

2

GetBufferSetLength

Renvoie un pointeur sur les caractères de la CString, tronqué à la longueur spécifiée.

3

ReleaseBuffer

Libère le contrôle du tampon retourné par GetBuffer

4

FreeExtra

Supprime toute surcharge de cet objet chaîne en libérant toute mémoire supplémentaire précédemment allouée à la chaîne.

5

LockBuffer

Désactive le comptage des références et protège la chaîne dans le tampon.

6

UnlockBuffer

Active le comptage des références et libère la chaîne dans le tampon.

Voici une liste de méthodes spécifiques à Windows.

Sr.No. Méthode et description
1

AllocSysString

Alloue un BSTR à partir des données CString.

2

SetSysString

Définit un objet BSTR existant avec les données d'un objet CString.

3

LoadString

Charge un objet CString existant à partir d'une ressource Windows CE.

Voici les différentes opérations sur les objets CString -

Créer une chaîne

Vous pouvez créer une chaîne en utilisant un littéral de chaîne ou en créant une instance de la 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
}

Lorsque le code ci-dessus est compilé et exécuté, vous verrez la sortie suivante.

Chaîne vide

Vous pouvez créer une chaîne vide en utilisant un littéral de chaîne vide ou en utilisant la méthode CString :: Empty (). Vous pouvez également vérifier si une chaîne est vide ou non à l'aide de la propriété booléenne 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
}

Lorsque le code ci-dessus est compilé et exécuté, vous verrez la sortie suivante.

Concaténation de chaînes

Pour concaténer deux ou plusieurs chaînes, vous pouvez utiliser l'opérateur + pour concaténer deux chaînes ou une méthode 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
}

Lorsque le code ci-dessus est compilé et exécuté, vous verrez la sortie suivante.

Longueur de chaine

Pour trouver la longueur de la chaîne, vous pouvez utiliser la méthode CString :: GetLength (), qui renvoie le nombre de caractères dans un objet 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
}

Lorsque le code ci-dessus est compilé et exécuté, vous verrez la sortie suivante.

Comparaison des chaînes

Pour comparer deux variables de chaînes, vous pouvez utiliser l'opérateur ==

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
}

Lorsque le code ci-dessus est compilé et exécuté, vous verrez la sortie suivante.