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 CSimpleStringT işaretçisini döndürür. |
CSimpleStringT::GetBufferSetLength |
bir içindeki CSimpleStringT karakterlerin 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 GetBuffer döndürülen arabellek denetimini serbest bırakır. |
CSimpleStringT::ReleaseBufferSetLength |
tarafından GetBuffer dö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) GetAt dö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::CopyChars
veya kaynak koduna CSimpleStringT::SetString
(konumunda atlsimpstr.h
bulunur) 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 nLength
karakter dizisine yönelik bir işaretçi.
pszSrc
Bu CSimpleStringT
nesneye kopyalanacak null ile sonlandırılan bir dize.
nLength
içindeki pch
karakter 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 CSimpleStringT
bkz. 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 typedef
CSimpleString
kullanılarak kullanımı CSimpleStringT::CSimpleStringT
gösterilmektedir. CSimpleString
, sınıf şablonunun CSimpleStringT
yaygı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 GetLength
dö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 GetLength
dö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 iChar
belirtilen bir karakteri döndürmek için bu yöntemi çağırın. Aşırı yüklenmiş alt simge ([]
) işleci için GetAt
uygun bir diğer addır. Null sonlandırıcı, kullanılarak GetAt
özel durum oluşturmadan adreslenebilir. Ancak, tarafından GetLength
sayılmaz ve döndürülen değer 0'dır.
Örnek
Aşağıdaki örnekte nasıl kullanılacağı CSimpleStringT::GetAt
gö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 ReleaseBuffer
CSimpleStringT
neden olabileceğinden çağrısından CSimpleStringT
sonra geçerli olmayabilir. arabellek, uzunluğunu CSimpleStringT
değ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 ReleaseBuffer
serbest 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 nLength
uzunlukla 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 ReleaseBuffer
CSimpleStringT
neden olabileceğinden çağrısından CSimpleStringT
sonra geçerli olmayabilir. arabellek, uzunluğunu CSimpleStringT
değ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 ReleaseBuffer
serbest bıraktığınızda son dize uzunluğunu belirtmeniz gerekir. çağırdığınızda ReleaseBuffer
bir sonlandırıcı null karakter eklerseniz, uzunluğu ReleaseBuffer
iç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 CSimpleStringT
uzunluğu 0 ise, değilse FALSE
dö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ı LockBuffer
yaparak, 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 LockBuffer
iş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 GetBuffer
nMinBufferLength
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 iChar
sı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 CSimpleStringT
değerini almak için alt simge ([]
) işlecini kullanabilirsiniz, ancak içindeki bir karakterin CSimpleStringT
değ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 iChar
sı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 CSimpleStringT
değerini almak için alt simge ([]
) işlecini kullanabilirsiniz, ancak içindeki bir karakterin CSimpleStringT
değ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 HeapReAlloc
tarafı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 GetBuffer
ayrı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 GetBuffer
ayrı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 GetLength
döndürülen değerden küçük olmalıdır.
ch
Yeni karakter.
Açıklamalar
konumunda iChar
bulunan 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 pszSrc
karakter 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 CSimpleStringT
geç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 psz
sayı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
.