Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Visual C++ dize verilerini yönetmek için çeşitli yollar sağlar:
C stilinde
NULLsonlandırılan dizelerle çalışmak için Dize DüzenlemeDizeleri yönetmek için Win32 API işlevleri
MFC'nin esnek, yeniden boyutlandırılabilir dize nesneleri sağlayan sınıfı
CStringTSınıf
CStringTSınıfı, aynı işleve sahip MFC'ye bağımsız bir dize nesnesi sağlarCString
Neredeyse tüm programlar dize verileriyle çalışır. MFC'nin CString sınıfı genellikle esnek dize işleme için en iyi çözümdür. Sürüm 7.0'dan itibaren MFC CString veya MFC'den bağımsız programlarda kullanılabilir. Hem çalışma zamanı kitaplığı hem CString de Unicode veya MBCS programlamada olduğu gibi çok baytlı (geniş) karakterler içeren dizeleri destekler.
Bu makalede, sınıf kitaplığının dize işlemeyle ilgili sağladığı genel amaçlı hizmetler açıklanmaktadır. Bu makalede ele alınan konular şunlardır:
CStringT Sınıf sınıfı, dizeleri işlemek için destek sağlar. Normalde C çalışma zamanı kitaplık dizesi paketi tarafından sağlanan işlevselliği değiştirmek ve genişletmek için tasarlanmıştır. sınıfı, CString Temel'de bulunanlara benzer şekilde basitleştirilmiş dize işleme için üye işlevleri ve işleçleri sağlar. sınıfı ayrıca s ve standart C++ dize veri türlerini oluşturmak, atamak ve karşılaştırmak CStringiçin oluşturucular ve işleçler sağlar. CString öğesinden CObjecttüretildiği için, nesneleri Microsoft Foundation Sınıf Kitaplığı'nın (MFC) çoğundan bağımsız olarak kullanabilirsinizCString.
CString nesneleri "değer semantiğini" izler. Nesne CString benzersiz bir değeri temsil eder. Bir CString dizeyi bir dize işaretçisi olarak değil gerçek bir dize olarak düşünün.
Nesne CString , değişken sayıda karakterden oluşan bir diziyi temsil eder. CString nesneleri karakter dizileri olarak düşünülebilir.
Unicode ve MBCS Taşınabilirlik Sağlar
MFC sürüm 3.0 ve üzeri ile, dahil olmak üzere CStringMFC hem Unicode hem de çok baytlı karakter kümeleri (MBCS) için etkinleştirilir. Bu destek, Unicode veya ANSI karakterleri için oluşturabileceğiniz taşınabilir uygulamalar yazmanızı kolaylaştırır. Bu taşınabilirliği etkinleştirmek için, bir CString nesnedeki her karakter türündedirTCHAR. Bu, uygulamanızı oluştururken simgeyi _UNICODE tanımlar gibi veya tanımlanmamış gibi char tanımlanırwchar_t. Karakter wchar_t 16 bit genişliğindedir. Tanımlı simgeyle _MBCS derlediyseniz MBCS etkinleştirilir. MFC'nin _MBCS kendisi sembolle (NAFX kitaplıkları için) veya _UNICODE tanımlanan simgeyle (UAFX kitaplıkları için) oluşturulur.
Not
Bu CString örnekteki örnekler ve dizelerdeki bunlara eşlik eden makaleler, değişmez değer dizesini forma çeviren makro kullanılarak _T Unicode taşınabilirliği için düzgün biçimlendirilmiş değişmez dizeleri gösterir:
L"literal string"
Not
derleyicinin Unicode dizesi olarak ele aldığı. Örneğin aşağıdaki kod:
CString strName = _T("Name");
Not
tanımlanıyorsa _UNICODE Unicode dizesi veya tanımlanmamışsa ANSI dizesi olarak çevrilir. Daha fazla bilgi için Unicode ve Çok Baytlı Karakter Kümesi (MBCS) Desteği makalesine bakın.
Bir CString nesne en çok INT_MAX (2.147.483.647) karakter depolayabilir. Veri TCHAR türü, bir CString nesnenin içinde tek tek karakterleri almak veya ayarlamak için kullanılır. Karakter dizilerinden farklı olarak, sınıfın CString yerleşik bir bellek ayırma özelliği vardır. Bu, nesnelerin gerektiğinde otomatik olarak büyümesine olanak tanır CString (yani, daha uzun dizelere sığacak şekilde bir CString nesne büyütme konusunda endişelenmeniz gerekmez).
CStrings ve const char İşaretçiler
Bir CString nesne, değişmez C stili bir dize (Unicode altında değilse aynı olan const char* bir PCXSTR) gibi de davranabilir. Dönüştürme CSimpleStringT::operator PCXSTR işleci, nesnelerin işlev çağrılarındaki karakter işaretçileri için serbestçe değiştirilmelerini sağlar CString . Oluşturucu, CString(LPCWSTR pszSrc) nesneler için karakter işaretçilerinin yerinin alınmasına CString olanak tanır.
Nesneleri katlama CString girişiminde bulunulmaz. öğesini içeren Chicagoiki CString nesne yaparsanız, örneğin içindeki karakterler Chicago iki yerde depolanır. (Bu, MFC'nin gelecekteki sürümleri için geçerli olmayabilir, bu nedenle buna bağımlı olmamanız gerekir.)
Not
bir karaktere CSimpleStringT::GetBuffer bitişik olmayan işaretçi olarak doğrudan erişmeniz CString gerektiğinde ve CSimpleStringT::ReleaseBuffer üye işlevlerini kullanın.
Not
Otomasyonda CStringT::AllocSysString kullanılan nesneleri ayırmak ve ayarlamak BSTR için ve CStringT::SetSysString üye işlevlerini kullanın (eski adıyla OLE Otomasyonu).
Not
Mümkün olduğunda, nesneleri yığın yerine çerçevede ayırın CString . Bu, bellek tasarrufu sağlar ve parametre geçirmeyi basitleştirir.
Sınıfı CString , Microsoft Foundation Sınıf Kitaplığı koleksiyon sınıfı olarak uygulanmaz, ancak CString nesneler kesinlikle koleksiyonlarda öğe olarak depolanabilir.
CString Başvuru Sayma
MFC sürüm 4.0'dan itibaren, Sınıf nesneleri kopyalandığındaCStringT, MFC verileri kopyalamak yerine bir başvuru sayısını artırır. Bu, parametreleri değere göre geçirmeyi ve değere göre nesneleri döndürmeyi CString daha verimli hale getirir. Bu işlemler, kopya oluşturucunun bazen birden çok kez çağrılmasına neden olur. Bir başvuru sayısının artırılması, bu yaygın işlemler için bu ek yükü azaltır ve daha çekici bir seçenek kullanır CString .
Her kopya yok edildikçe, özgün nesnedeki başvuru sayısı azalmış. Özgün CString nesne, başvuru sayısı sıfıra düşürülene kadar yok edilmez.
Üye işlevlerini CSimpleStringT::LockBuffer CSimpleStringT::UnlockBuffer kullanarak başvuru sayımını CString devre dışı bırakabilir veya etkinleştirebilirsiniz.