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, CStringAe CStringW sono definiti in atlstr.h. CStringT è definito in cstringt.h.

CString, CStringAe 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 altro CString oggetto.

    CString oldString = _T("This is a test");
    CString newString = oldString;
    

    Il contenuto di un CString oggetto viene copiato quando un CString 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 usare CString 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