Not
Åtkomst till denna sida kräver auktorisation. Du kan prova att logga in eller byta katalog.
Åtkomst till denna sida kräver auktorisation. Du kan prova att byta katalog.
I det här avsnittet beskrivs följande grundläggande CString-åtgärder :
Class CString baseras på klassmallen CStringT.
CString är en typedef av CStringT. Mer exakt CString är en typedefexplicit specialisering av CStringT, vilket är ett vanligt sätt att använda en klassmall för att definiera en klass. Lika definierade klasser är CStringA och CStringW.
CString, CStringAoch CStringW definieras i atlstr.h.
CStringT definieras i cstringt.h.
CString, CStringAoch får var och CStringW en en uppsättning av de metoder och operatorer som definierats av CStringT för användning med de strängdata som de stöder. Vissa av metoderna duplicerar och överträffar i vissa fall strängtjänsterna i C-körningsbiblioteken.
CString Obs! är en intern klass. För en strängklass som ska användas i ett C++/CLI-hanterat projekt använder du System.String.
Skapa CString-objekt från Standard C-literalsträngar
Du kan tilldela literalsträngar i C-stil till på samma sätt som du kan tilldela ett CString objekt till ett CString annat.
Tilldela värdet för en C-literalsträng till ett
CStringobjekt.CString myString = _T("This is a test");Tilldela värdet för ett till ett
CStringannatCStringobjekt.CString oldString = _T("This is a test"); CString newString = oldString;Innehållet i ett objekt kopieras när ett
CStringobjekt tilldelas till ettCStringannat. Därför delar de två strängarna inte en referens till de faktiska tecken som utgör strängen. Mer information om hur du använderCStringobjekt som värden finns i CString Semantics.Anmärkning
Om du vill skriva programmet så att det kan kompileras för Unicode eller för ANSI, kodliterala strängar med hjälp av _T makro. Mer information finns i Stöd för Unicode- och Multibyte-teckenuppsättningar (MBCS).
Åtkomst till enskilda tecken i en CString
Du kan komma åt enskilda tecken i ett CString objekt med hjälp GetAt av metoderna och SetAt . Du kan också använda matriselementet, eller den nedsänkta operatorn ( [ ] ) i stället GetAt för att hämta enskilda tecken. (Detta liknar åtkomst till matriselement efter index, som i standardsträngar i C-stil.) Indexvärden för CString tecken är nollbaserade.
Sammanfoga två CString-objekt
Om du vill sammanfoga två CString objekt använder du sammanlänkningsoperatorerna (+ eller +=), enligt följande.
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".
Minst ett argument till sammanfogningsoperatorerna (+ eller +=) måste vara ett CString objekt, men du kan använda en konstant teckensträng (till exempel "big") eller en char (till exempel "x") för det andra argumentet.
Jämföra CString-objekt
Metoden Compare och operatorn == för CString är likvärdiga.
Compare, operator==, och CompareNoCase är MBCS- och Unicode-medvetna, CompareNoCase är också skiftlägesokänsliga. Metoden CollateCString för är språkkänslig och är ofta långsammare än Compare. Använd Collate endast där du måste följa sorteringsreglerna enligt det aktuella nationella språket.
I följande tabell visas tillgängliga CString-jämförelsefunktioner och motsvarande Unicode/MBCS-portabla funktioner i C-körningsbiblioteket.
| CString-funktion | MBCS-funktion | Unicode-funktion |
|---|---|---|
Compare |
_mbscmp |
wcscmp |
CompareNoCase |
_mbsicmp |
_wcsicmp |
Collate |
_mbscoll |
wcscoll |
Klassmallen CStringT definierar relationsoperatorerna (<, <=, >=, >, = = och !=), som är tillgängliga för användning av CString. Du kan jämföra två CStrings med hjälp av dessa operatorer, som du ser i följande exempel.
CString s1(_T("Tom"));
CString s2(_T("Jerry"));
ASSERT(s2 < s1);
Konvertera CString-objekt
Information om hur du konverterar CString-objekt till andra strängtyper finns i Så här konverterar du mellan olika strängtyper.
Använda CString med wcout
Om du vill använda en CString med wcout måste du uttryckligen omvandla objektet till en const wchar_t* som visas i följande exempel:
CString cs("meow");
wcout << (const wchar_t*) cs << endl;
Utan cast cs behandlas som en void* och wcout skriver ut objektets adress. Det här beteendet orsakas av subtila interaktioner mellan mallargumentsavdrag och överlagringsmatchning som i sig är korrekta och överensstämmer med C++-standarden.
Se även
Strängar (ATL/MFC)
CStringT-klass
Mallspecialisering
Gör så här: Konvertera mellan olika strängtyper