Operazioni di base con CString
In questo argomento vengono illustrate le operazioni CString di base seguenti:
Class CString
si basa sul modello di classe CStringT Class. CString
è di CStringT
.typedef
Più esattamente, CString
è una typedef
specializzazione esplicita di CStringT
, che è un modo comune per usare un modello di classe per definire una classe. Le classi definite in modo simile sono CStringA
e CStringW
.
CString
, CStringA
e CStringW
sono definiti in atlstr.h. CStringT
è definito in cstringt.h.
CString
, CStringA
e CStringW
ogni ottiene un set di metodi e operatori definiti da CStringT
per l'uso con i dati stringa supportati. Alcuni dei metodi duplicati e, in alcuni casi, superano i servizi stringa delle librerie di runtime C.
Nota: CString
è una classe nativa. Per una classe stringa da usare in un progetto gestito C++/CLI, usare System.String
.
Creazione di oggetti CString da stringhe letterali C standard
È possibile assegnare stringhe letterali in stile C a un CString
oggetto proprio come è possibile assegnare un CString
oggetto a un altro.
Assegnare il valore di una stringa letterale C a un
CString
oggetto .CString myString = _T("This is a test");
Assegnare il valore di un
CString
oggetto a un altroCString
oggetto.CString oldString = _T("This is a test"); CString newString = oldString;
Il contenuto di un
CString
oggetto viene copiato quando unCString
oggetto viene assegnato a un altro. Pertanto, le due stringhe non condividono un riferimento ai caratteri effettivi che costituiscono la stringa. Per altre informazioni su come usareCString
gli oggetti come valori, vedere Semantica CString.Nota
Per scrivere l'applicazione in modo che possa essere compilata per Unicode o per ANSI, le stringhe letterali di codice usando la macro _T. Per altre informazioni, vedere Supporto per set di caratteri Unicode e multibyte (MBCS).
Accesso a singoli caratteri in un CString
È possibile accedere a singoli caratteri in un CString
oggetto usando i GetAt
metodi e SetAt
. È anche possibile usare l'elemento della matrice o l'operatore di indice ( [ ] ) anziché GetAt
ottenere singoli caratteri. Questo aspetto è simile all'accesso agli elementi della matrice per indice, come nelle stringhe di tipo C standard. I valori di indice per CString
i caratteri sono in base zero.
Concatenazione di due oggetti CString
Per concatenare due CString
oggetti, usare gli operatori di concatenazione (+ o +=), come indicato di seguito.
CString s1 = _T("This "); // Cascading concatenation
s1 += _T("is a ");
CString s2 = _T("test");
CString message = s1 + _T("big ") + s2;
// Message contains "This is a big test".
Almeno un argomento per gli operatori di concatenazione (+ o +=) deve essere un CString
oggetto , ma è possibile usare una stringa di caratteri costante (ad esempio , "big"
) o ( char
ad esempio , 'x') per l'altro argomento.
Confronto di oggetti CString
Il Compare
metodo e l'operatore == per CString
sono equivalenti. Compare
, operator==, e sono in grado di supportare MBCS e CompareNoCase
Unicode; CompareNoCase
non fa distinzione tra maiuscole e minuscole. Il Collate
metodo di CString
è sensibile alle impostazioni locali ed è spesso più lento di Compare
. Usare Collate
solo dove è necessario rispettare le regole di ordinamento specificate dalle impostazioni locali correnti.
La tabella seguente illustra le funzioni di confronto CString disponibili e le funzioni unicode/MBCS portabili equivalenti nella libreria di runtime C.
Funzione CString | Funzione MBCS | Funzione Unicode |
---|---|---|
Compare |
_mbscmp |
wcscmp |
CompareNoCase |
_mbsicmp |
_wcsicmp |
Collate |
_mbscoll |
wcscoll |
Il CStringT
modello di classe definisce gli operatori relazionali (<, <=, >=, >, ==e !=), disponibili per l'uso da parte di CString
. È possibile confrontare due CStrings
usando questi operatori, come illustrato nell'esempio seguente.
CString s1(_T("Tom"));
CString s2(_T("Jerry"));
ASSERT(s2 < s1);
Conversione di oggetti CString
Per informazioni sulla conversione di oggetti CString in altri tipi di stringa, vedere Procedura: Convertire tra vari tipi di stringa.
Uso di CString con wcout
Per usare un oggetto CString con wcout
è necessario eseguire il cast esplicito dell'oggetto a un const wchar_t*
oggetto come illustrato nell'esempio seguente:
CString cs("meow");
wcout << (const wchar_t*) cs << endl;
Senza il cast, cs
viene trattato come e void*
wcout
stampa l'indirizzo dell'oggetto. Questo comportamento è causato da interazioni sottili tra la deduzione degli argomenti del modello e la risoluzione dell'overload che sono in sé corretti e conformi allo standard C++.
Vedi anche
Stringhe (ATL/MFC)
Classe CStringT
Specializzazione modello
Procedura: Convertire vari tipi di stringhe