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.
Bu sınıf bir CSimpleStringT nesneyi temsil eder.
Sözdizimi
template <typename BaseType>
class CSimpleStringT
Parametreler
BaseType
Dize sınıfının karakter türü. Aşağıdakilerden biri olabilir:
char(ANSI karakter dizeleri için).wchar_t(Unicode karakter dizeleri için).TCHAR(hem ANSI hem de Unicode karakter dizeleri için).
Üyeler
Genel Tür Tanımları
| Veri Akışı Adı | Açıklama |
|---|---|
CSimpleStringT::PCXSTR |
Sabit bir dizeye işaretçi. |
CSimpleStringT::PXSTR |
Dize işaretçisi. |
Ortak Oluşturucular
| Veri Akışı Adı | Açıklama |
|---|---|
CSimpleStringT::CSimpleStringT |
CSimpleStringT Nesneleri çeşitli şekillerde oluşturur. |
CSimpleStringT::~CSimpleStringT |
Yıkıcı. |
Genel Yöntemler
| Veri Akışı Adı | Açıklama |
|---|---|
CSimpleStringT::Append |
Bir CSimpleStringT nesneyi var olan CSimpleStringT bir nesneye ekler. |
CSimpleStringT::AppendChar |
Varolan CSimpleStringT bir nesneye bir karakter ekler. |
CSimpleStringT::CopyChars |
Bir karakteri veya karakterleri başka bir dizeye kopyalar. |
CSimpleStringT::CopyCharsOverlapped |
Bir karakteri veya karakterleri arabelleklerin çakıştığı başka bir dizeye kopyalar. |
CSimpleStringT::Empty |
Dizeyi sıfır uzunluğunda olacak şekilde zorlar. |
CSimpleStringT::FreeExtra |
Daha önce dize nesnesi tarafından ayrılan tüm ek belleği serbest bırakır. |
CSimpleStringT::GetAllocLength |
Bir CSimpleStringT nesnenin ayrılan uzunluğunu alır. |
CSimpleStringT::GetAt |
Belirli bir konumdaki karakteri döndürür. |
CSimpleStringT::GetBuffer |
içindeki karakterlerin CSimpleStringTişaretçisini döndürür. |
CSimpleStringT::GetBufferSetLength |
bir içindeki CSimpleStringTkarakterlerin işaretçisini, belirtilen uzunlukta keserek döndürür. |
CSimpleStringT::GetLength |
Nesnedeki CSimpleStringT karakter sayısını döndürür. |
CSimpleStringT::GetManager |
Nesnesinin bellek yöneticisini CSimpleStringT alır. |
CSimpleStringT::GetString |
Karakter dizesini alır |
CSimpleStringT::IsEmpty |
Bir CSimpleStringT nesnenin karakter içermediğini sınar. |
CSimpleStringT::LockBuffer |
Başvuru sayımını devre dışı bırakır ve arabellekteki dizeyi korur. |
CSimpleStringT::Preallocate |
Karakter arabelleği için belirli bir bellek miktarı ayırır. |
CSimpleStringT::ReleaseBuffer |
tarafından GetBufferdöndürülen arabellek denetimini serbest bırakır. |
CSimpleStringT::ReleaseBufferSetLength |
tarafından GetBufferdöndürülen arabellek denetimini serbest bırakır. |
CSimpleStringT::SetAt |
Belirli bir konumdaki bir karakteri ayarlar. |
CSimpleStringT::SetManager |
Bir CSimpleStringT nesnenin bellek yöneticisini ayarlar. |
CSimpleStringT::SetString |
Bir CSimpleStringT nesnenin dizesini ayarlar. |
CSimpleStringT::StringLength |
Belirtilen dizedeki karakter sayısını döndürür. |
CSimpleStringT::Truncate |
Dizeyi belirtilen uzunlukta kesebilir. |
CSimpleStringT::UnlockBuffer |
Başvuru sayımını etkinleştirir ve dizeyi arabellekte serbest bırakır. |
Ortak İşleçler
| Veri Akışı Adı | Açıklama |
|---|---|
CSimpleStringT::operator PCXSTR |
Bir CSimpleStringT nesnede C stili dize olarak depolanan karakterlere doğrudan erişir. |
CSimpleStringT::operator[] |
Belirli bir konumdaki karakteri ( için işleç değişimi) GetAtdöndürür. |
CSimpleStringT::operator += |
Yeni bir dizeyi var olan bir dizenin sonuna birleştirir. |
CSimpleStringT::operator = |
Nesneye yeni bir CSimpleStringT değer atar. |
Açıklamalar
CSimpleStringT , Visual C++ tarafından desteklenen çeşitli dize sınıflarının temel sınıfıdır. Dize nesnesinin bellek yönetimi ve temel arabellek işleme için minimum destek sağlar. Daha gelişmiş dize nesneleri için bkz CStringT Class. .
Gereksinimler
Üstbilgi:atlsimpstr.h
CSimpleStringT::Append
Bir CSimpleStringT nesneyi var olan CSimpleStringT bir nesneye ekler.
Sözdizimi
void Append(const CSimpleStringT& strSrc);
void Append(PCXSTR pszSrc, int nLength);
void Append(PCXSTR pszSrc);
Parametreler
strSrc
CSimpleStringT Eklenecek nesne.
pszSrc
Eklenecek karakterleri içeren bir dize işaretçisi.
nLength
Eklenecek karakter sayısı.
Açıklamalar
Var olan CSimpleStringT bir nesneyi başka CSimpleStringT bir nesneye eklemek için bu yöntemi çağır.
Örnek
Aşağıdaki örnekte kullanımı gösterilmektedir CSimpleStringT::Append.
CAtlString basestr;
IAtlStringMgr* pMgr = basestr.GetManager();
CSimpleString str1(pMgr), str2(pMgr);
str1.SetString(_T("Soccer is"));
str2.SetString(_T(" an elegant game"));
str1.Append(str2);
ASSERT(_tcscmp(str1, _T("Soccer is an elegant game")) == 0);
CSimpleStringT::AppendChar
Varolan CSimpleStringT bir nesneye bir karakter ekler.
Sözdizimi
void AppendChar(XCHAR ch);
Parametreler
ch
Eklenecek karakter
Açıklamalar
Belirtilen karakteri var olan CSimpleStringT bir nesnenin sonuna eklemek için bu işlevi çağırın.
CSimpleStringT::CopyChars
Bir karakteri veya karakterleri bir CSimpleStringT nesneye kopyalar.
Sözdizimi
static void CopyChars(
XCHAR* pchDest,
const XCHAR* pchSrc,
int nChars) throw();
static void CopyChars(
XCHAR* pchDest,
size_t nDestLen,
const XCHAR* pchSrc,
int nChars) throw();
Parametreler
pchDest
Karakter dizesi işaretçisi.
nDestLen
Arabellek boyutu: pchDest
pchSrc
Kopyalanacak karakterleri içeren bir dize işaretçisi.
nChars
Kopyalanacak karakter sayısı pchSrc .
Açıklamalar
karakterlerini pchSrc dizeye kopyalamak için bu yöntemi çağırın pchDest .
Örnek
Aşağıdaki örnekte kullanımı gösterilmektedir CSimpleStringT::CopyChars.
CAtlString basestr;
IAtlStringMgr* pMgr = basestr.GetManager();
CSimpleString str(_T("xxxxxxxxxxxxxxxxxxx"), 20, pMgr);
const TCHAR* pszSrc = _T("Hello world!");
_tprintf_s(_T("%s\n"), str);
str.CopyChars(str.GetBuffer(), 20, pszSrc, 12);
_tprintf_s(_T("%s\n"), str);
Bu örnekten alınan çıkış aşağıdaki gibidir:
xxxxxxxxxxxxxxxxxxx
Hello world!xxxxxxx
CSimpleStringT::CopyCharsOverlapped
Bir karakteri veya karakterleri bir CSimpleStringT nesneye kopyalar.
Sözdizimi
static void CopyCharsOverlapped(
XCHAR* pchDest,
const XCHAR* pchSrc,
int nChars) throw();
Parametreler
pchDest
Karakter dizesi işaretçisi.
pchSrc
Kopyalanacak karakterleri içeren bir dize işaretçisi.
nChars
Kopyalanacak karakter sayısı pchSrc .
Açıklamalar
karakterlerini pchSrc dizeye kopyalamak için bu yöntemi çağırın pchDest . 'den farklı olarak CopyChars, CopyCharsOverlapped çakışabilecek karakter arabelleklerinden kopyalama için güvenli bir yöntem sağlar.
Örnek
örneğine CSimpleStringT::CopyCharsveya kaynak koduna CSimpleStringT::SetString (konumunda atlsimpstr.hbulunur) bakın.
CSimpleStringT::CSimpleStringT
Bir CSimpleStringT nesne oluşturur.
Sözdizimi
CSimpleStringT(const XCHAR* pchSrc, int nLength, IAtlStringMgr* pStringMgr);
CSimpleStringT(PCXSTR pszSrc, IAtlStringMgr* pStringMgr);
CSimpleStringT(const CSimpleStringT& strSrc);
explicit CSimpleStringT(IAtlStringMgr* pStringMgr) throw();
Parametreler
strSrc
Bu CSimpleStringT nesneye kopyalanacak mevcut CSimpleStringT bir nesne.
pchSrc
Null sonlandırılmayan, uzun nLengthkarakter dizisine yönelik bir işaretçi.
pszSrc
Bu CSimpleStringT nesneye kopyalanacak null ile sonlandırılan bir dize.
nLength
içindeki pchkarakter sayısının sayısı.
pStringMgr
Nesnenin bellek yöneticisinin işaretçisi CSimpleStringT . ve için bellek yönetimi hakkında IAtlStringMgr daha fazla bilgi için CSimpleStringTbkz. Bellek Yönetimi ve CStringT.
Açıklamalar
Yeni CSimpleStringT bir nesne oluşturma. Oluşturucular giriş verilerini yeni ayrılmış depolama alanına kopyaladığı için bellek özel durumları oluşabilir.
Örnek
Aşağıdaki örnekte, ATL CSimpleStringT::CSimpleStringTtypedefkullanılarak kullanımı CSimpleString gösterilmektedir.
CSimpleString , sınıf şablonunun CSimpleStringTyaygın olarak kullanılan bir uzmanlığıdır.
CAtlString basestr;
IAtlStringMgr* pMgr = basestr.GetManager();
CSimpleString s1(pMgr);
// Empty string
CSimpleString s2(_T("cat"), pMgr);
// From a C string literal
CSimpleString s3(s2);
// Copy constructor
CSimpleString s4(s2 + _T(" ") + s3);
// From a string expression
CSimpleString s5(_T("xxxxxx"), 6, pMgr);
// s5 = "xxxxxx"
CSimpleStringT::Empty
Bu CSimpleStringT nesneyi boş bir dize yapar ve belleği uygun şekilde serbest bırakır.
Sözdizimi
void Empty() throw();
Açıklamalar
Daha fazla bilgi için bkz . Dizeler: CString Özel Durum Temizleme.
Örnek
Aşağıdaki örnekte kullanımı gösterilmektedir CSimpleStringT::Empty.
CAtlString basestr;
IAtlStringMgr* pMgr = basestr.GetManager();
CSimpleString s(pMgr);
ASSERT(s.IsEmpty());
CSimpleStringT::FreeExtra
Daha önce dize tarafından ayrılan ancak artık gerekli olmayan ek belleği boşaltıyor.
Sözdizimi
void FreeExtra();
Açıklamalar
Bu, dize nesnesi tarafından tüketilen bellek yükünü azaltmalıdır. yöntemi, arabelleği tarafından GetLengthdöndürülen tam uzunluğa yeniden ayırır.
Örnek
CAtlString basestr;
IAtlStringMgr* pMgr;
pMgr= basestr.GetManager();
ASSERT(pMgr != NULL);
// Create a CSimpleString with 28 characters
CSimpleString str(_T("Many sports are fun to play."), 28, pMgr);
_tprintf_s(_T("Alloc length is %d, String length is %d\n"),
str.GetAllocLength(), str.GetLength());
// Assigning a smaller string won't cause CSimpleString to free its
// memory, because it assumes the string will grow again anyway.
str = _T("Soccer is best!");
_tprintf_s(_T("Alloc length is %d, String length is %d\n"),
str.GetAllocLength(), str.GetLength());
// This call forces CSimpleString to release the extra
// memory it doesn't need.
str.FreeExtra();
_tprintf_s(_T("Alloc length is %d, String length is %d\n"),
str.GetAllocLength(), str.GetLength());
Bu örnekten alınan çıkış aşağıdaki gibidir:
Alloc length is 1031, String length is 1024
Alloc length is 1031, String length is 15
Alloc length is 15, String length is 15
CSimpleStringT::GetAllocLength
Bir CSimpleStringT nesnenin ayrılan uzunluğunu alır.
Sözdizimi
int GetAllocLength() const throw();
Dönüş Değeri
Bu nesne için ayrılan karakter sayısı.
Açıklamalar
Bu nesne için ayrılan karakter sayısını belirlemek için bu CSimpleStringT yöntemi çağırın. Bu işlevi çağırma örneği için bkz FreeExtra .
CSimpleStringT::GetAt
Nesneden bir CSimpleStringT karakter döndürür.
Sözdizimi
XCHAR GetAt(int iChar) const;
Parametreler
iChar
Nesnedeki CSimpleStringT karakterin sıfır tabanlı dizini.
iChar parametresi 0'a eşit veya ondan büyük ve tarafından GetLengthdöndürülen değerden küçük olmalıdır. Aksi takdirde, GetAt bir özel durum oluşturur.
Dönüş Değeri
XCHAR Dizede belirtilen konumdaki karakteri içeren bir.
Açıklamalar
tarafından iCharbelirtilen bir karakteri döndürmek için bu yöntemi çağırın. Aşırı yüklenmiş alt simge ([]) işleci için GetAtuygun bir diğer addır. Null sonlandırıcı, kullanılarak GetAtözel durum oluşturmadan adreslenebilir. Ancak, tarafından GetLengthsayılmaz ve döndürülen değer 0'dır.
Örnek
Aşağıdaki örnekte nasıl kullanılacağı CSimpleStringT::GetAtgösterilmektedir.
CSimpleString s(_T("abcdef"), pMgr);
ASSERT(s.GetAt(2) == _T('c'));
CSimpleStringT::GetBuffer
Nesne için iç karakter arabelleğine CSimpleStringT bir işaretçi döndürür.
Sözdizimi
PXSTR GetBuffer(int nMinBufferLength);
PXSTR GetBuffer();
Parametreler
nMinBufferLength
Karakter arabelleğinin tutabileceği en az karakter sayısı. Bu değer null sonlandırıcı için alan içermez.
Geçerli arabelleğin uzunluğundan büyükse nMinBufferLength , GetBuffer geçerli arabelleği yok eder, istenen boyutta bir arabellekle değiştirir ve nesne başvuru sayısını sıfıra sıfırlar. Bu arabelleğe daha önce çağırdıysanız LockBuffer arabellek kilidini kaybedersiniz.
Dönüş Değeri
PXSTR Nesnenin (null-sonlandırılan) karakter arabelleğine yönelik bir işaretçi.
Açıklamalar
Nesnesinin arabellek içeriğini döndürmek için bu yöntemi çağırın CSimpleStringT . Döndürülen PXSTR sabit değildir ve bu nedenle içeriklerin doğrudan değiştirilmesine CSimpleStringT izin verir.
Dize içeriğini değiştirmek için tarafından GetBuffer döndürülen işaretçiyi kullanırsanız, başka ReleaseBuffer bir yöntem kullanmadan önce iç durumunu CSimpleStringT güncelleştirmek için çağrısında CSimpleStringT bulunmanız gerekir.
tarafından döndürülen GetBuffer adres, ek işlemler arabelleğin yeniden ayrılmasına ReleaseBufferCSimpleStringT neden olabileceğinden çağrısından CSimpleStringT sonra geçerli olmayabilir. arabellek, uzunluğunu CSimpleStringTdeğiştirmezseniz yeniden ayrılmaz.
Nesne yok edildiğinde CSimpleStringT arabellek belleği otomatik olarak boşaltılır.
Dize uzunluğunu kendiniz izlerseniz, sonlandırıcı null karakteri eklememelisiniz. Ancak, arabelleği ile ReleaseBufferserbest bıraktığınızda son dize uzunluğunu belirtmeniz gerekir. Sonlandırıcı null karakter eklerseniz uzunluk için -1 (varsayılan) değerini geçirmeniz gerekir.
ReleaseBuffer ardından arabellek uzunluğunu belirler.
İsteği karşılamak GetBuffer için yeterli bellek yoksa, bu yöntem bir CMemoryException*oluşturur.
Örnek
CSimpleString s(_T("abcd"), pMgr);
LPTSTR pBuffer = s.GetBuffer(10);
int sizeOfBuffer = s.GetAllocLength();
// Directly access CSimpleString buffer
_tcscpy_s(pBuffer, sizeOfBuffer, _T("Hello"));
ASSERT(_tcscmp(s, _T("Hello")) == 0);
s.ReleaseBuffer();
CSimpleStringT::GetBufferSetLength
nesnenin iç karakter arabelleğine bir işaretçi döndürür, gerekirse içinde belirtilen CSimpleStringTuzunlukla tam olarak eşleşmesi için nLength uzunluğunu keserek veya büyütür.
Sözdizimi
PXSTR GetBufferSetLength(int nLength);
Parametreler
nLength
Karakter arabelleğinin CSimpleStringT karakter cinsinden tam boyutu.
Dönüş Değeri
PXSTR Nesnenin (null-sonlandırılan) karakter arabelleğine bir işaretçi.
Açıklamalar
Nesnenin iç arabelleğinin belirtilen uzunluğunu almak için bu yöntemi çağırın CSimpleStringT . Döndürülen PXSTR işaretçi değildir const ve bu nedenle içeriklerin doğrudan değiştirilmesine CSimpleStringT izin verir.
Dize içeriğini değiştirmek için tarafından GetBufferSetLength döndürülen işaretçiyi kullanırsanız, başka ReleaseBuffer bir yöntem kullanmadan önce öğesinin CSimpleStringT iç durumunu güncelleştirmek için öğesini çağırınCSimpleStringT.
tarafından döndürülen GetBufferSetLength adres, ek işlemler arabelleğin yeniden ayrılmasına ReleaseBufferCSimpleStringT neden olabileceğinden çağrısından CSimpleStringT sonra geçerli olmayabilir. arabellek, uzunluğunu CSimpleStringTdeğiştirmezseniz yeniden atanmaz.
Nesne yok edildiğinde CSimpleStringT arabellek belleği otomatik olarak boşaltılır.
Dize uzunluğunu kendiniz izlerseniz, sonlandırıcı null karakteri eklemeyin. kullanarak arabelleği ReleaseBufferserbest bıraktığınızda son dize uzunluğunu belirtmeniz gerekir. çağırdığınızda ReleaseBufferbir sonlandırıcı null karakter eklerseniz, uzunluğu ReleaseBufferiçin -1 (varsayılan) değerini iletir ve ReleaseBuffer arabellekte uzunluğunu belirlemek için bir strlen gerçekleştirir.
Başvuru sayımı hakkında daha fazla bilgi için aşağıdaki makalelere bakın:
- Windows SDK'sında Başvuru Sayımı aracılığıyla Nesne YaşamLarını Yönetme.
- Windows SDK'sında Başvuru Sayımı uygulama.
- Windows SDK'sında Başvuru Sayılarını Yönetme Kuralları.
Örnek
Aşağıdaki örnekte kullanımı gösterilmektedir CSimpleStringT::GetBufferSetLength.
CSimpleString str(pMgr);
LPTSTR pstr = str.GetBufferSetLength(3);
pstr[0] = _T('C');
pstr[1] = _T('u');
pstr[2] = _T('p');
str.ReleaseBuffer();
str += _T(" soccer is best!");
ASSERT(_tcscmp(str, _T("Cup soccer is best!")) == 0);
CSimpleStringT::GetLength
Nesnedeki CSimpleStringT karakter sayısını döndürür.
Sözdizimi
int GetLength() const throw();
Dönüş Değeri
Dizedeki karakterlerin sayısı.
Açıklamalar
Nesnedeki karakter sayısını döndürmek için bu yöntemi çağırın. Sayı null sonlandırıcı içermiyor.
Çok baytlı karakter kümeleri (MBCS) GetLength için her 8 bitlik karakteri sayar; diğer bir ifadeyle, çok baytlı bir karakterdeki bir baş ve sondaki bayt iki bayt olarak sayılır. Bu işlevi çağırma örneği için bkz FreeExtra .
CSimpleStringT::GetManager
Nesnesinin bellek yöneticisini CSimpleStringT alır.
Sözdizimi
IAtlStringMgr* GetManager() const throw();
Dönüş Değeri
Nesnenin bellek yöneticisine yönelik bir CSimpleStringT işaretçi.
Açıklamalar
nesnesi tarafından kullanılan bellek yöneticisini almak için bu yöntemi çağırın CSimpleStringT . Bellek yöneticileri ve dize nesneleri hakkında daha fazla bilgi için bkz . Bellek Yönetimi ve CStringT.
CSimpleStringT::GetString
Karakter dizesini alır.
Sözdizimi
PCXSTR GetString() const throw();
Dönüş Değeri
Null ile sonlandırılan karakter dizesinin işaretçisi.
Açıklamalar
Nesnesiyle ilişkili karakter dizesini almak için bu yöntemi çağırın CSimpleStringT .
Not
Döndürülen PCXSTR işaretçidir const ve içeriklerin doğrudan değiştirilmesine CSimpleStringT izin vermez.
Örnek
Aşağıdaki örnekte kullanımı gösterilmektedir CSimpleStringT::GetString.
CAtlString basestr;
IAtlStringMgr* pMgr = basestr.GetManager();
CSimpleString str(pMgr);
str += _T("Cup soccer is best!");
_tprintf_s(_T("%s"), str.GetString());
Bu örnekten alınan çıkış aşağıdaki gibidir:
Cup soccer is best!
CSimpleStringT::IsEmpty
Bir CSimpleStringT nesneyi boş koşul için sınar.
Sözdizimi
bool IsEmpty() const throw();
Dönüş Değeri
Nesnenin TRUE uzunluğu 0 ise, değilse CSimpleStringTdöndürürFALSE.
Açıklamalar
Nesnenin boş bir dize içerip içermediğini belirlemek için bu yöntemi çağırın.
Örnek
Aşağıdaki örnekte kullanımı gösterilmektedir CSimpleStringT::IsEmpty.
CSimpleString s(pMgr);
ASSERT(s.IsEmpty());
CSimpleStringT::LockBuffer
Başvuru sayımını devre dışı bırakır ve arabellekteki dizeyi korur.
Sözdizimi
PXSTR LockBuffer();
Dönüş Değeri
Bir nesnenin CSimpleStringT veya null ile sonlandırılan dizenin işaretçisi.
Açıklamalar
Nesnesinin arabelleği kilitlemek için bu yöntemi çağırın CSimpleStringT . çağrısı LockBufferyaparak, başvuru sayısı için -1 ile dizenin bir kopyasını oluşturursunuz. Başvuru sayısı değeri -1 olduğunda, arabellekteki dize "kilitli" durumda kabul edilir. Kilitli durumdayken dize iki şekilde korunur:
Kilitli dizeye atanmış olsa bile, başka hiçbir dize kilitli dizedeki verilere başvuru alamaz.
Kilitli dize, başka bir dize kilitli dizeye kopyalanmış olsa bile hiçbir zaman başka bir dizeye başvurmaz.
Arabelleğe dizeyi kilitleyerek, dizenin arabellekteki özel saklamasının değişmeden kaldığından emin olursunuz.
ile LockBufferişiniz bittiğinde, başvuru sayısını 1 olarak sıfırlamak için öğesini arayın UnlockBuffer .
Not
Kilitli bir arabelleğe çağrı GetBuffer yaparsanız ve parametresini GetBuffernMinBufferLength geçerli arabelleğin uzunluğundan büyük olarak ayarlarsanız arabellek kilidini kaybedersiniz. Böyle bir çağrı GetBuffer geçerli arabelleği yok eder, istenen boyutta bir arabellekle değiştirir ve başvuru sayısını sıfıra sıfırlar.
Başvuru sayımı hakkında daha fazla bilgi için aşağıdaki makalelere bakın:
Windows SDK'sında Başvuru Sayımı aracılığıyla Nesne YaşamLarını Yönetme
Windows SDK'da Başvuru Sayma Uygulama
Windows SDK'da Başvuru Sayılarını Yönetme Kuralları
Örnek
Aşağıdaki örnekte kullanımı gösterilmektedir CSimpleStringT::LockBuffer.
CAtlString basestr;
IAtlStringMgr* pMgr = basestr.GetManager();
CSimpleString str(_T("Hello"), pMgr);
TCHAR ch;
str.LockBuffer();
ch = str.GetAt(2);
_tprintf_s(_T("%c"), ch);
str.UnlockBuffer();
Bu örnekten alınan çıkış aşağıdaki gibidir:
l
CSimpleStringT::operator[]
Karakter dizisinin tek bir karakterine erişmek için bu işlevi çağırın.
Sözdizimi
XCHAR operator[](int iChar) const;
Parametreler
iChar
Dizedeki bir karakterin sıfır tabanlı dizini.
Açıklamalar
Aşırı yüklenmiş alt simge ([]) işleci, içindeki iCharsıfır tabanlı dizin tarafından belirtilen tek bir karakter döndürür. Bu işleç, üye işlevi için GetAt kullanışlı bir alternatiftir.
Not
içindeki bir karakterin []değerini almak için alt simge (CSimpleStringT) işlecini kullanabilirsiniz, ancak içindeki bir karakterin CSimpleStringTdeğerini değiştirmek için bunu kullanamazsınız.
Örnek
Aşağıdaki örnekte kullanımı gösterilmektedir CSimpleStringT::operator [].
CSimpleString s(_T("abc"), pMgr);
ASSERT(s[1] == _T('b'));
CSimpleStringT::operator +=
Var olan bir dizenin sonuna yeni bir dize veya karakter ekler.
Sözdizimi
CSimpleStringT& operator +=(PCXSTR pszSrc);
CSimpleStringT& operator +=(const CSimpleStringT& strSrc);
template<int t_nSize>
CSimpleStringT& operator+=(const CStaticString< XCHAR, t_nSize >& strSrc);
CSimpleStringT& operator +=(char ch);
CSimpleStringT& operator +=(unsigned char ch);
CSimpleStringT& operator +=(wchar_t ch);
Parametreler
pszSrc
Null ile sonlandırılan bir dizenin işaretçisi.
strSrc
Var olan CSimpleStringT bir nesnenin işaretçisi.
ch
Eklenecek karakter.
Açıklamalar
işleci başka bir CSimpleStringT nesne veya karakter kabul eder. Bu birleştirme işlecini her kullandığınızda bellek özel durumlarının oluşabileceğini unutmayın çünkü bu CSimpleStringT nesneye eklenen karakterler için yeni depolama alanı ayrılabilir.
Örnek
Aşağıdaki örnekte kullanımı gösterilmektedir CSimpleStringT::operator +=.
CSimpleString str(_T("abc"), pMgr);
ASSERT(_tcscmp((str += _T("def")), _T("abcdef")) == 0);
CSimpleStringT::operator =
Nesneye yeni bir CSimpleStringT değer atar.
Sözdizimi
CSimpleStringT& operator =(PCXSTR pszSrc);
CSimpleStringT& operator =(const CSimpleStringT& strSrc);
Parametreler
pszSrc
Null ile sonlandırılan bir dizenin işaretçisi.
strSrc
Var olan CSimpleStringT bir nesnenin işaretçisi.
Açıklamalar
Hedef dize (sol taraf) yeni verileri depolayabilecek kadar büyükse, yeni bellek ayırma işlemi yapılmaz. Sonuçta elde CSimpleStringT edilen nesneyi tutmak için genellikle yeni depolama alanı ayrıldığından atama işlecini her kullandığınızda bellek özel durumlarının oluşabileceğini unutmayın.
Örnek
Aşağıdaki örnekte kullanımı gösterilmektedir CSimpleStringT::operator =.
CSimpleString s1(pMgr), s2(pMgr);
// Empty CSimpleStringT objects
s1 = _T("cat");
// s1 = "cat"
ASSERT(_tcscmp(s1, _T("cat")) == 0);
s2 = s1; // s1 and s2 each = "cat"
ASSERT(_tcscmp(s2, _T("cat")) == 0);
s1 = _T("the ") + s1;
// Or expressions
ASSERT(_tcscmp(s1, _T("the cat")) == 0);
s1 = _T("x");
// Or just individual characters
ASSERT(_tcscmp(s1, _T("x")) == 0);
CSimpleStringT::operator PCXSTR
Bir CSimpleStringT nesnede C stili dize olarak depolanan karakterlere doğrudan erişir.
Sözdizimi
operator PCXSTR() const throw();
Dönüş Değeri
Dize verilerinin karakter işaretçisi.
Açıklamalar
Hiçbir karakter kopyalanır; yalnızca bir işaretçi döndürülür. Bu işleçle dikkatli olun. Karakter işaretçisini aldıktan sonra bir CString nesneyi değiştirirseniz, işaretçiyi geçersiz kılan belleğin yeniden yerleştirilmesine neden olabilirsiniz.
Örnek
Aşağıdaki örnekte kullanımı gösterilmektedir CSimpleStringT::operator PCXSTR.
// If the prototype of a function is known to the compiler,
// the PCXSTR cast operator may be invoked implicitly.
CSimpleString strSports(L"Soccer is Best!", pMgr);
WCHAR sz[1024];
wcscpy_s(sz, strSports);
// If the prototype isn't known or is a va_arg prototype,
// you must invoke the cast operator explicitly. For example,
// the va_arg part of a call to swprintf_s() needs the cast:
swprintf_s(sz, 1024, L"I think that %s!\n", (PCWSTR)strSports);
// While the format parameter is known to be an PCXSTR and
// therefore doesn't need the cast:
swprintf_s(sz, 1024, strSports);
// Note that some situations are ambiguous. This line will
// put the address of the strSports object to stdout:
wcout << strSports;
// while this line will put the content of the string out:
wcout << (PCWSTR)strSports;
CSimpleStringT::PCXSTR
Sabit bir dizeye işaretçi.
Sözdizimi
typedef ChTraitsBase< BaseType >::PCXSTR PCXSTR;
CSimpleStringT::Preallocate
Nesne için CSimpleStringT belirli bir bayt miktarı ayırır.
Sözdizimi
void Preallocate( int nLength);
Parametreler
nLength
Karakter arabelleğinin CSimpleStringT karakter cinsinden tam boyutu.
Açıklamalar
Nesne için belirli bir arabellek boyutu ayırmak için bu yöntemi çağırın CSimpleStringT .
CSimpleStringT karakter arabelleği için alan ayıramıyorsa bir STATUS_NO_MEMORY özel durum oluşturur. Varsayılan olarak, bellek ayırma WIN32 API işlevleri HeapAlloc veya HeapReAlloctarafından gerçekleştirilir.
Örnek
Aşağıdaki örnekte kullanımı gösterilmektedir CSimpleStringT::Preallocate.
CAtlString basestr;
IAtlStringMgr* pMgr = basestr.GetManager();
CSimpleString str(pMgr);
_tprintf_s(_T("Allocated length: %d\n"), str.GetAllocLength());
str.Preallocate(100);
_tprintf_s(_T("Allocated length: %d\n"), str.GetAllocLength());
Bu örnekten alınan çıkış aşağıdaki gibidir:
Allocated length: 0
Allocated length: 103
CSimpleStringT::PXSTR
Dize işaretçisi.
Sözdizimi
typedef ChTraitsBase< BaseType >::PXSTR PXSTR;
CSimpleStringT::ReleaseBuffer
tarafından GetBufferayrılan arabelleğin denetimini serbest bırakır.
Sözdizimi
void ReleaseBuffer(int nNewLength = -1);
Parametreler
nNewLength
Dizenin karakter cinsinden yeni uzunluğu, null sonlandırıcı sayılmıyor. Dize null olarak sonlandırılırsa, -1 varsayılan değeri boyutu dizenin geçerli uzunluğuna ayarlar CSimpleStringT .
Açıklamalar
Dize nesnesinin arabelleğine yeniden dağıtmak veya boşaltmak için bu yöntemi çağırın. Arabellekteki dizenin null olarak sonlandırıldığını biliyorsanız, bağımsız değişkeni atlayabilirsiniz nNewLength . Dizeniz null olarak sonlandırılmamışsa uzunluğunu belirtmek için kullanın nNewLength . tarafından GetBuffer döndürülen adres, çağrısından ReleaseBuffer veya başka CSimpleStringT bir işlemden sonra geçersiz.
Örnek
Aşağıdaki örnekte kullanımı gösterilmektedir CSimpleStringT::ReleaseBuffer.
const int bufferSize = 1024;
CSimpleString s(_T("abc"), pMgr);
LPTSTR p = s.GetBuffer(bufferSize);
_tcscpy_s(p, bufferSize, _T("abc"));
// use the buffer directly
ASSERT(s.GetLength() == 3);
// String length = 3
s.ReleaseBuffer();
// Surplus memory released, p is now invalid.
ASSERT(s.GetLength() == 3);
// Length still 3
CSimpleStringT::ReleaseBufferSetLength
tarafından GetBufferayrılan arabelleğin denetimini serbest bırakır.
Sözdizimi
void ReleaseBufferSetLength(int nNewLength);
Parametreler
nNewLength
Serbest bırakılan dizenin uzunluğu
Açıklamalar
Bu işlev, dize nesnesi için geçerli bir uzunluğun geçirilmesi gerektiği dışında işlevsel olarak şuna benzer ReleaseBuffer .
CSimpleStringT::SetAt
Nesneden tek bir CSimpleStringT karakter ayarlar.
Sözdizimi
void SetAt(int iChar, XCHAR ch);
Parametreler
iChar
Nesnedeki CSimpleStringT karakterin sıfır tabanlı dizini.
iChar parametresi 0'a eşit veya ondan büyük ve tarafından GetLengthdöndürülen değerden küçük olmalıdır.
ch
Yeni karakter.
Açıklamalar
konumunda iCharbulunan karakterin üzerine yazmak için bu yöntemi çağırın. Bu yöntem, varolan dizenin sınırlarını aşarsa iChar dizeyi büyütmez.
Örnek
Aşağıdaki örnekte kullanımı gösterilmektedir CSimpleStringT::SetAt.
CSimpleString s(_T("abcdef"), pMgr);
s.SetAt(1, _T('a'));
ASSERT(_tcscmp(s, _T("aacdef")) == 0);
CSimpleStringT::SetManager
Nesnenin bellek yöneticisini CSimpleStringT belirtir.
Sözdizimi
void SetManager(IAtlStringMgr* pStringMgr);
Parametreler
pStringMgr
Yeni bellek yöneticisinin işaretçisi.
Açıklamalar
Nesnesi tarafından kullanılan yeni bir bellek yöneticisi belirtmek için bu yöntemi çağırın CSimpleStringT . Bellek yöneticileri ve dize nesneleri hakkında daha fazla bilgi için bkz . Bellek Yönetimi ve CStringT.
Örnek
Aşağıdaki örnekte kullanımı gösterilmektedir CSimpleStringT::SetManager.
CSimpleString s(pMgr);
s.SetManager(pCustomMgr);
CSimpleStringT::SetString
Bir CSimpleStringT nesnenin dizesini ayarlar.
Sözdizimi
void SetString(PCXSTR pszSrc, int nLength);
void SetString(PCXSTR pszSrc);
Parametreler
pszSrc
Null ile sonlandırılan bir dizenin işaretçisi.
nLength
içindeki pszSrckarakter sayısının sayısı.
Açıklamalar
Nesneye CSimpleStringT bir dize kopyalayın.
SetString arabellekteki eski dize verilerinin üzerine yazar.
Her iki sürümü SetString de null işaretçi olup olmadığını pszSrc denetler ve boşsa bir E_INVALIDARG hata oluşturur.
öğesinin SetString tek parametreli sürümü, null olarak sonlandırılan bir dizeye işaret etmesini bekler pszSrc .
öğesinin SetString iki parametreli sürümü de null olarak sonlandırılan bir dize olmasını bekler pszSrc . İlk olarak null sonlandırıcıyla karşılaşmadığı sürece dize uzunluğu olarak kullanır nLength .
öğesinin SetString iki parametreli sürümü, içindeki pszSrcgeçerli arabellekteki bir konuma işaret edip etmediğini CSimpleStringT de denetler. Bu özel durumda, SetString dize verilerini arabelleğe geri kopyalarken dize verilerinin üzerine yazmayan bir bellek kopyalama işlevi kullanır.
Örnek
Aşağıdaki örnekte kullanımı gösterilmektedir CSimpleStringT::SetString.
CSimpleString s(_T("abcdef"), pMgr);
ASSERT(_tcscmp(s, _T("abcdef")) == 0);
s.SetString(_T("Soccer"), 6);
ASSERT(_tcscmp(s, _T("Soccer")) == 0);
CSimpleStringT::StringLength
Belirtilen dizedeki karakter sayısını döndürür.
Sözdizimi
ATL_NOINLINE static int StringLength(PCXSTR psz) throw();
Parametreler
psz
Null ile sonlandırılan bir dizenin işaretçisi.
Dönüş Değeri
içindeki karakter pszsayısı; null sonlandırıcı sayılmıyor.
Açıklamalar
tarafından işaret edilen dizedeki karakter sayısını almak için bu yöntemi çağırın psz.
Örnek
Aşağıdaki örnekte kullanımı gösterilmektedir CSimpleStringT::StringLength.
ASSERT(CSimpleString::StringLength(_T("soccer")) == 6);
CSimpleStringT::Truncate
Dizeyi yeni uzunluğa kadar kısaltın.
Sözdizimi
void Truncate(int nNewLength);
Parametreler
nNewLength
Dizenin yeni uzunluğu.
Açıklamalar
Dizenin içeriğini yeni uzunluğa ayırmak için bu yöntemi çağırın.
Not
Bu, arabelleğin ayrılan uzunluğunu etkilemez. Geçerli arabelleği azaltmak veya artırmak için bkz FreeExtra . ve Preallocate.
Örnek
Aşağıdaki örnekte kullanımı gösterilmektedir CSimpleStringT::Truncate.
CAtlString basestr;
IAtlStringMgr* pMgr = basestr.GetManager();
CSimpleString str(_T("abcdefghi"), pMgr);
_tprintf_s(_T("String length: %d / Allocated length: %d\n"), str.GetLength(), str.GetAllocLength());
_tprintf_s(_T("Contents: %s\n"), (LPCTSTR)str);
str.Truncate(4);
_tprintf_s(_T("String length: %d / Allocated length: %d\n"), str.GetLength(), str.GetAllocLength());
_tprintf_s(_T("Contents: %s\n"), (LPCTSTR)str);
Bu örnekten alınan çıkış:
String length: 9 / Allocated length: 15
Contents: abcdefghi
String length: 4 / Allocated length: 15
Contents: abcd
CSimpleStringT::UnlockBuffer
Nesnenin arabelleğinin CSimpleStringT kilidini açar.
Sözdizimi
void UnlockBuffer() throw();
Açıklamalar
Dizenin başvuru sayısını 1 olarak sıfırlamak için bu yöntemi çağırın.
CSimpleStringT Yıkıcı, yıkıcı çağrıldığında arabelleğin kilitlenmediğinden emin olmak için otomatik olarak çağırırUnlockBuffer. Bu yöntemin bir örneği için bkz LockBuffer. .
CSimpleStringT::~CSimpleStringT
Bir CSimpleStringT nesneyi yok eder.
Sözdizimi
~CSimpleStringT() throw();
Açıklamalar
Nesnesini yok etmek için bu yöntemi çağırın CSimpleStringT .