MFC - Stringhe
Stringssono oggetti che rappresentano sequenze di caratteri. La stringa di caratteri in stile C ha avuto origine nel linguaggio C e continua a essere supportata in C ++.
Questa stringa è in realtà un array unidimensionale di caratteri che termina con un carattere nullo "\ 0".
Una stringa con terminazione null contiene i caratteri che compongono la stringa seguita da un valore null.
Ecco il semplice esempio di array di caratteri.
char word[12] = { 'H', 'e', 'l', 'l', 'o', ' ', 'W', 'o', 'r', 'l', 'd', '\0' };
Di seguito è un altro modo per rappresentarlo.
char word[] = "Hello, World";
La libreria Microsoft Foundation Class (MFC) fornisce una classe per manipolare la stringa chiamata CString. Di seguito sono riportate alcune importanti funzionalità di CString.
CString non ha una classe base.
Un oggetto CString è costituito da una sequenza di caratteri a lunghezza variabile.
CString fornisce funzioni e operatori utilizzando una sintassi simile a quella di Basic.
Gli operatori di concatenazione e confronto, insieme alla gestione semplificata della memoria, rendono gli oggetti CString più facili da usare rispetto ai normali array di caratteri.
Ecco il costruttore di CString.
Sr.No. | Metodo e descrizione |
---|---|
1 | CString Costruisce oggetti CString in vari modi |
Ecco un elenco di metodi di array:
Sr.No. | Metodo e descrizione |
---|---|
1 | GetLength Restituisce il numero di caratteri in un oggetto CString. |
2 | IsEmpty Verifica se un oggetto CString non contiene caratteri. |
3 | Empty Forza una stringa di lunghezza pari a 0. |
4 | GetAt Restituisce il carattere in una posizione specificata. |
5 | SetAt Imposta un carattere in una posizione specificata. |
Ecco un elenco di metodi di confronto:
Sr.No. | Metodo e descrizione |
---|---|
1 | Compare Confronta due stringhe (distingue tra maiuscole e minuscole). |
2 | CompareNoCase Confronta due stringhe (senza distinzione tra maiuscole e minuscole). |
Ecco un elenco di metodi di estrazione:
Sr.No. | Metodo e descrizione |
---|---|
1 | Mid Estrae la parte centrale di una stringa (come la funzione Basic MID $). |
2 | Left Estrae la parte sinistra di una stringa (come la funzione $ SINISTRA di base). |
3 | Right Estrae la parte destra di una stringa (come la funzione $ DESTRA di base). |
4 | SpanIncluding Estrae i caratteri dalla stringa, che si trovano nel set di caratteri specificato. |
5 | SpanExcluding Estrae i caratteri dalla stringa che non sono nel set di caratteri specificato. |
Di seguito è riportato un elenco di metodi di conversione.
Sr.No. | Metodo e descrizione |
---|---|
1 | MakeUpper Converte tutti i caratteri di questa stringa in caratteri maiuscoli. |
2 | MakeLower Converte tutti i caratteri di questa stringa in caratteri minuscoli. |
3 | MakeReverse Inverte i caratteri in questa stringa. |
4 | Format Formatta la stringa come fa sprintf. |
5 | TrimLeft Taglia i caratteri dello spazio bianco iniziale dalla stringa. |
6 | TrimRight Taglia i caratteri di spazio vuoto finali dalla stringa. |
Ecco un elenco di metodi di ricerca.
Sr.No. | Metodo e descrizione |
---|---|
1 | Find Trova un carattere o una sottostringa all'interno di una stringa più grande. |
2 | ReverseFind Trova un carattere all'interno di una stringa più grande; inizia dalla fine. |
3 | FindOneOf Trova il primo carattere corrispondente da un set. |
Ecco un elenco di metodi di accesso ai buffer.
Sr.No. | Metodo e descrizione |
---|---|
1 | GetBuffer Restituisce un puntatore ai caratteri in CString. |
2 | GetBufferSetLength Restituisce un puntatore ai caratteri nella CString, troncando alla lunghezza specificata. |
3 | ReleaseBuffer Rilascia il controllo del buffer restituito da GetBuffer |
4 | FreeExtra Rimuove qualsiasi overhead di questo oggetto stringa liberando la memoria aggiuntiva precedentemente allocata alla stringa. |
5 | LockBuffer Disabilita il conteggio dei riferimenti e protegge la stringa nel buffer. |
6 | UnlockBuffer Abilita il conteggio dei riferimenti e rilascia la stringa nel buffer. |
Di seguito è riportato un elenco di metodi specifici per Windows.
Sr.No. | Metodo e descrizione |
---|---|
1 | AllocSysString Alloca un BSTR dai dati CString. |
2 | SetSysString Imposta un oggetto BSTR esistente con i dati di un oggetto CString. |
3 | LoadString Carica un oggetto CString esistente da una risorsa Windows CE. |
Di seguito sono riportate le diverse operazioni sugli oggetti CString:
Crea stringa
È possibile creare una stringa utilizzando un valore letterale stringa o creando un'istanza della 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 il codice precedente viene compilato ed eseguito, vedrai il seguente output.
Stringa vuota
È possibile creare una stringa vuota utilizzando un valore letterale stringa vuoto o utilizzando il metodo CString :: Empty (). È inoltre possibile verificare se una stringa è vuota o meno utilizzando la proprietà 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 il codice sopra è stato compilato ed eseguito, vedrai il seguente output.
Concatenazione di stringhe
Per concatenare due o più stringhe, è possibile utilizzare l'operatore + per concatenare due stringhe o un metodo 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 il codice sopra è stato compilato ed eseguito, vedrai il seguente output.
Lunghezza della stringa
Per trovare la lunghezza della stringa è possibile utilizzare il metodo CString :: GetLength (), che restituisce il numero di caratteri in un oggetto 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 il codice sopra è stato compilato ed eseguito, vedrai il seguente output.
Confronto tra stringhe
Per confrontare due variabili di stringa è possibile utilizzare l'operatore ==
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 il codice sopra è stato compilato ed eseguito, vedrai il seguente output.