Aracılığıyla paylaş


c-Style Strings ilgili CString işlemleri

A CString nesnesi, karakter dizesi veri içerir.CStringdizi devralan yöntemleri ve işleçleri sınıf şablonunda tanımlanan CStringT dize verilerle çalışmak için.(CString olan bir typedef , uzmanlaşmış CStringT karakter veri türü ile bir çözüm bulmak için CString destekler.)

CStringkarakter verileri dahili olarak c-style boşlukla sonlandırılmış dize olarak depolamaz.Bunun yerine, CString gerektirdiği boşluk ve verilere daha güvenli bir şekilde izleyebilir, karakter veri uzunluğu izler.

CStringc-style strings kabul etmez ve c stilinde dize olarak karakter verilere erişme yolu sağlar.Bu konuda nasıl kullanılacağını açıklayan aşağıdaki bölümler içeren bir CString c-style biten bir dizi gibi nesne.

  • c-style biten dizelere dönüþtürmek

  • Standart çalışma zamanı kitaplığı dize işlevleri ile çalışma

  • Doğrudan CString içeriğini değiştirme

  • Değişken bağımsız değişken işlevler ile CString nesnelerini kullanma

  • CString biçimsel parametre belirtme

c-stil biten CString kullanma

Kullanmak için bir CString c stilinde dize olarak nesne, nesne artığını LPCTSTR.Aşağıdaki örnekte, CString bir salt okunur c-style boşlukla sonlandırılmış dize için bir işaretçi döndürür.strcpy İşlevi değişken c stilinde dize bir kopyasını koyar myString.

    CString aCString = "A string";
    char myString[256];
    strcpy(myString, (LPCTSTR)aString);

Kullanabileceğiniz CString yöntemleri, örneğin, SetAt, string nesnesi içindeki tek tek karakterleri değiştirmek için.Ancak, LPCTSTR işaretçisi geçicidir ve herhangi bir değişiklik yapıldığında geçersiz hale CString.CString De kapsam dışı gidebilir ve otomatik olarak silinir.Bir yeni edinmenizi öneririz LPCTSTR , işaretçiyi bir CString nesne her seferinde birini kullanın.

Bazen bir kopyasını gerektirebilecek CString doğrudan değiştirmek için veri.Daha güvenli işlevini kullanan strcpy_s (veya Unicode/mbcs-portable _tcscpy_s) kopyalamak için CString nesnesine ayrı bir arabellek.Burada karakter güvenle değiştirilebilir, tarafından aşağıdaki örnekte gösterildiği gibi budur.

CString theString(_T("This is a test"));
int sizeOfString = (theString.GetLength() + 1);
LPTSTR lpsz = new TCHAR[sizeOfString];
_tcscpy_s(lpsz, sizeOfString, theString);
//... modify lpsz as much as you want   

[!NOT]

Üçüncü bağımsız değişken strcpy_s (veya Unicode/mbcs-portable _tcscpy_s) herhangi bir constwchar_t* (Unicode) veya bir constchar* (ANSI).Geçişleri Yukarıdaki örnek bir CString için bu bağımsız değişkeni.C++ Derleyici otomatik olarak tanımlanan dönüştürme işlevi uygular CString dönüştürür sınıfı bir CString için bir LPCTSTR.Başka bir türden çevrim işlemleri tanımlama yeteneği C++ en kullanışlı özelliklerinden biridir.

Standart çalışma zamanı kitaplığı dize işlevleri ile çalışma

Bulamadı olması gereken bir CString yöntemi için düşündüğünüz gibi standart c Çalışma Zamanı Kitaplığı dize işlevlerini kullanarak herhangi bir dize işlemi gerçekleştirmek için strcmp (veya Unicode/mbcs-portable _tcscmp).

c çalışma zamanı dize işlevlerini kullanmak zorundaysanız, anlatılan teknikleri kullanın C-Style Null-Terminated dizelerini dönüştürme_core_using_cstring_as_a_c.2d.style_null.2d.terminated_string.Kopyalayabileceğiniz CString nesne bir eşdeğer c stilinde dize arabellek, arabellek ve ortaya çıkan c stilinde dize başa sonra atama işlemleri bir CString nesnesi.

Doğrudan CString içeriğini değiştirme

Çoğu durumda, kullanmanız gereken CString içeriğini değiştirmek için üye işlevlerini bir CString nesne veya dönüştürmek için CString c-style karakter dizesi.

Bazı durumlarda burada onu doğrudan değiştirmek için anlamlı bir hale CString karakter arabelleği gerektiren işletim sistemi işlevleri ile çalışırken, örneğin, içeriği.

GetBuffer Ve ReleaseBuffer dahili karakter arabelleği erişim yöntemleri sunan bir CString object ve doğrudan değiştirmenize olanak sağlar.Aşağıdaki adımlar, bu amaçla bu işlevleri kullanma gösterir.

CString object dahili karakter arabelleği erişmek için GetBuffer ve ReleaseBuffer kullanmak

  1. Call GetBuffer için bir CString object ve gerekli arabellek uzunluğu belirtin.

  2. Tarafından döndürülen işaretçi kullanmak GetBuffer doğrudan karakterleri yazmak için CString nesnesi.

  3. Call ReleaseBuffer için CString tüm iç güncelleştirmek için nesne CString durum bilgileri, örneğin dizenin uzunluğu.İçeriğini değiştirdikten sonra bir CString , doğrudan çağırmanız gerekir nesne ReleaseBuffer diğer aramadan önce CString üye işlevler.

Değişken bağımsız değişken işlevler ile CString nesnelerini kullanma

c bazı işlevler sayılarda bağımsız değişken alır.Önemli bir örnek printf_s.Bu tür bir işlev olarak bildirilmiş biçimini nedeniyle derleyici değişkenlerin türü emin olamazsınız ve her argümanda gerçekleştirmek için hangi dönüştürme işlemi belirleyemiyor.Bu nedenle, açık türe geçirilirken tonunu kullanmak önemli bir CString sayılarda bağımsız değişken alan bir işlev nesne.

Kullanmak için bir CString açıkça artığını bir değişken bağımsız değişken işlev nesnesinde CString için bir LPCTSTR , aşağıdaki örnekte gösterildiği gibi dize.

CString kindOfFruit = _T("bananas");
int howmany = 25;
_tprintf_s(_T("You have %d %s\n"), howmany, (LPCTSTR)kindOfFruit);    

CString resmi parametrelerini belirtme

Bir dize bağımsız değişkeni gerekiyor çoğu işlev biçimsel parametre işlev prototipi belirtmek iyi bir const bir karakter işaretçi (LPCTSTR) yerine bir CString.Ne zaman bir biçimsel parametre belirtilirse bir const işaretçisi bir karaktere ya da bir işaretçi iletebilir bir TCHARharflerden oluşan dizi "hi there", ya da birCString nesnesi.CString Nesnesini otomatik olarak dönüştürülür bir LPCTSTR.Kullanabileceğiniz herhangi bir yerde bir LPCTSTR, ayrıca bir CString nesnesi.

Biçimsel parametre bir sabit dize başvurusu belirtebilirsiniz (yani, constCString&) bağımsız değişkeni değiştirilmemesi durumunda.DROP const dize işlevi tarafından değiştirilecekse değiştiricisi.Varsayılan boş değeri isterseniz, boş bir dize başlatma "", aşağıda gösterildiği gibi:

void AddCustomer(const CString& name, const CString& address, 
   const CString& comment = _T(""));

Kolayca dönebilirsiniz işlevi sonuç için bir CString nesne değeri.

Ayrıca bkz.

Kavramlar

CString geçirerek bağımsız değişkeni

Diğer Kaynaklar

Dizeler (atl/mfc)