Basic CString Operations
In questo argomento vengono descritte le seguenti operazioni di base CString :
Creando CString oggetti da stringhe standard di valore letterale c
Accedere ai singoli caratteri in un CString
Concatenare due oggetti di CString
Confrontare gli oggetti di CString
Per convertire oggetti di CString
Class CString è basato sul modello CStringT Classdella classe. CString è typedefCStringT. Più preciso, CString è typedefdi una specializzazione esplicitaCStringT, una tecnica comune utilizzare il modello di classe per definire la classe. Le classi analogamente definite vengono CStringA e CStringW. Per ulteriori informazioni sulla specializzazione esplicita, vedere Creazione di istanze di modelli di classe.
CString, CStringAe CStringW sono definiti in atlstr.h. CStringT è definito in cstringt.h.
CString, CStringAe CStringW ognuno ottiene un set di metodi degli operatori e definito da CStringT da utilizzare con i dati in formato stringa che supportano. Alcuni duplicati di metodi, e, supera in alcuni casi i servizi della stringa delle librerie di runtime del linguaggio C.
Nota: CString è una classe nativa. Per una classe string che serve nel progetto gestito ++/CLI c, utilizzare System.String.
Creare gli oggetti di CString da stringhe standard di valore letterale c
È possibile assegnare stringhe letterali di tipo C a CString come è possibile assegnare un oggetto CString a un altro.
Assegnare il valore della stringa letterale c a un oggetto CString.
CString myString = _T("This is a test");
Assegnare il valore di un CString a un altro oggetto CString.
CString oldString = _T("This is a test"); CString newString = oldString;
Il contenuto di un oggetto CString viene copiato quando un oggetto CString viene assegnato a un altro. Di conseguenza, le due stringhe non condividono un riferimento ai caratteri che costituiscono la stringa. Per ulteriori informazioni su come utilizzare gli oggetti CString come valori, vedere CString Semantics.
Nota
Per scrivere l'applicazione in modo da consentirne la compilazione per Unicode o ANSI, stringhe letterali di codice utilizzando la macro di _T.Per ulteriori informazioni, vedere Unicode and Multibyte Character Set (MBCS) Support.
Accedere ai singoli caratteri in un CString
È possibile accedere ai singoli caratteri in un oggetto CString utilizzando i metodi SetAt e GetAt. È inoltre possibile utilizzare l'elemento della matrice, o pedice, l'operatore ( [ ] ) anziché GetAt per ottenere i singoli caratteri. (Si ricorda accedere agli elementi della matrice tramite l'indice, come nelle stringhe di tipo C standard.) i valori di indice per i caratteri CString sono in base zero.
Concatenare due oggetti di CString
Per concatenare due oggetti CString, utilizzare gli operatori di concatenazione (+ o +=), come segue.
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 agli operatori di concatenazione (+ o +=) deve essere un oggetto CString, tuttavia è possibile utilizzare una stringa di caratteri costante, ad esempio "big") o char, ad esempio "x ") per l'altro argomento.
Confrontare gli oggetti di CString
Il metodo Compare e l'operatore di == per CString sono equivalenti. Compare, **operator==**e CompareNoCase sono MBCS e Unicode sviluppatori; CompareNoCase è anche senza distinzione tra maiuscole e minuscole. Il metodo CollateCString è riservato impostazioni locali e spesso è più lento Compare. Utilizzare Collate solo in cui è necessario attenerti alle regole di ordinamento specificate dalle impostazioni locali correnti.
Nella tabella seguente sono illustrate le funzioni di confronto disponibili CString e le funzioni dell'equivalente Unicode/MBCS-portable nella libreria di runtime del linguaggio C.
Funzione di CString |
Funzione MBCS |
Funzione Unicode |
---|---|---|
Compare |
_mbscmp |
wcscmp |
CompareNoCase |
_mbsicmp |
_wcsicmp |
Collate |
_mbscoll |
wcscoll |
Il modello di classe CStringT definisce gli operatori relazionali (<, <=, >=, >, == e! =), disponibili per l'utilizzo CString. È possibile confrontare due CStrings utilizzando questi operatori, come illustrato nell'esempio seguente.
CString s1(_T("Tom"));
CString s2(_T("Jerry"));
ASSERT(s2 < s1);
Per convertire oggetti di CString
Per informazioni sulla conversione degli oggetti di CString ad altri tipi di stringa, vedere Procedura: convertire vari tipi di stringhe.
Utilizzando CString con wcout
Per utilizzare un CString con wcout è necessario eseguire esplicitamente il cast dell'oggetto a const wchar_t* come illustrato nel seguente esempio:
CString cs("meow");
wcout << (const wchar_t*) cs << endl;
Senza il cast, cs viene considerato void* e wcout stampa l'indirizzo dell'oggetto. Questo comportamento è causato dalle interazioni immediatamente evidenti tra la deduzione di argomento di modello e la risoluzione dell'overload che rappresentano direttamente corretti e allo standard C++.
Vedere anche
Riferimenti
Creazione di istanze di modelli di classe
Specializzazione esplicita di modelli di classe
Specializzazione parziale di modelli di classe (C++)
Concetti
Procedura: convertire vari tipi di stringhe