Share via


CSimpleStringT Sınıfı

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 typedefCSimpleStringkullanılarak kullanımı CSimpleStringT::CSimpleStringT 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 CSimpleStringT bir yöntem kullanmadan önce iç durumunu CSimpleStringT güncelleştirmek için çağrısında ReleaseBuffer 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 nLengthuzunlukla tam olarak eşleşmesi için CSimpleStringT 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 CSimpleStringT bir yöntem kullanmadan önce öğesinin CSimpleStringT iç durumunu güncelleştirmek için öğesini çağırınReleaseBuffer.

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:

Ö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 CSimpleStringT uzunluğu 0 ise, değilse FALSEdöndürürTRUE.

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:

Ö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 CSimpleStringTdeğerini almak için alt simge ([]) 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 []

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 CSimpleStringTdeğerini almak için alt simge ([]) işlecini kullanabilirsiniz, ancak içindeki bir karakterin CSimpleStringTdeğerini değiştirmek için bunu kullanamazsınız.

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 CSimpleStringTgeçerli arabellekteki bir konuma işaret edip etmediğini pszSrc 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 .

Ayrıca bkz.

Hiyerarşi Grafiği
ATL/MFC Paylaşılan Sınıfları