CSimpleStringT
Kelas
Kelas ini mewakili CSimpleStringT
objek.
Sintaks
template <typename BaseType>
class CSimpleStringT
Parameter
BaseType
Jenis karakter kelas string. Bisa jadi salah satu dari yang berikut:
char
(untuk string karakter ANSI).wchar_t
(untuk string karakter Unicode).TCHAR
(untuk string karakter ANSI dan Unicode).
Anggota
Typedef Publik
Nama | Deskripsi |
---|---|
CSimpleStringT::PCXSTR |
Penunjuk ke string konstanta. |
CSimpleStringT::PXSTR |
Penunjuk ke string. |
Konstruktor Publik
Nama | Deskripsi |
---|---|
CSimpleStringT::CSimpleStringT |
Membangun CSimpleStringT objek dengan berbagai cara. |
CSimpleStringT::~CSimpleStringT |
Destruktor. |
Metode Publik
Nama | Deskripsi |
---|---|
CSimpleStringT::Append |
CSimpleStringT Menambahkan objek ke objek yang sudah adaCSimpleStringT . |
CSimpleStringT::AppendChar |
Menambahkan karakter ke objek yang ada CSimpleStringT . |
CSimpleStringT::CopyChars |
Menyalin karakter atau karakter ke string lain. |
CSimpleStringT::CopyCharsOverlapped |
Menyalin karakter atau karakter ke string lain di mana buffer tumpang tindih. |
CSimpleStringT::Empty |
Memaksa string memiliki panjang nol. |
CSimpleStringT::FreeExtra |
Membebaskan memori tambahan yang sebelumnya dialokasikan oleh objek string. |
CSimpleStringT::GetAllocLength |
Mengambil panjang objek yang CSimpleStringT dialokasikan. |
CSimpleStringT::GetAt |
Mengembalikan karakter pada posisi tertentu. |
CSimpleStringT::GetBuffer |
Mengembalikan penunjuk ke karakter dalam CSimpleStringT . |
CSimpleStringT::GetBufferSetLength |
Mengembalikan penunjuk ke karakter dalam CSimpleStringT , memotong ke panjang yang ditentukan. |
CSimpleStringT::GetLength |
Mengembalikan jumlah karakter dalam objek CSimpleStringT . |
CSimpleStringT::GetManager |
Mengambil manajer CSimpleStringT memori objek. |
CSimpleStringT::GetString |
Mengambil string karakter |
CSimpleStringT::IsEmpty |
Menguji apakah CSimpleStringT objek tidak berisi karakter. |
CSimpleStringT::LockBuffer |
Menonaktifkan penghitungan referensi dan melindungi string dalam buffer. |
CSimpleStringT::Preallocate |
Mengalokasikan jumlah memori tertentu untuk buffer karakter. |
CSimpleStringT::ReleaseBuffer |
Merilis kontrol buffer yang dikembalikan oleh GetBuffer . |
CSimpleStringT::ReleaseBufferSetLength |
Merilis kontrol buffer yang dikembalikan oleh GetBuffer . |
CSimpleStringT::SetAt |
Mengatur karakter pada posisi tertentu. |
CSimpleStringT::SetManager |
Mengatur manajer CSimpleStringT memori objek. |
CSimpleStringT::SetString |
Mengatur string CSimpleStringT objek. |
CSimpleStringT::StringLength |
Mengembalikan jumlah karakter dalam string yang ditentukan. |
CSimpleStringT::Truncate |
Memotong string ke panjang yang ditentukan. |
CSimpleStringT::UnlockBuffer |
Mengaktifkan penghitungan referensi dan merilis string dalam buffer. |
Operator Publik
Nama | Deskripsi |
---|---|
CSimpleStringT::operator PCXSTR |
Secara langsung mengakses karakter yang CSimpleStringT disimpan dalam objek sebagai string gaya C. |
CSimpleStringT::operator[] |
Mengembalikan karakter pada posisi tertentu — penggantian operator untuk GetAt . |
CSimpleStringT::operator += |
Menggabungkan string baru ke akhir string yang ada. |
CSimpleStringT::operator = |
Menetapkan nilai baru ke CSimpleStringT objek. |
Keterangan
CSimpleStringT
adalah kelas dasar untuk berbagai kelas string yang didukung oleh Visual C++. Ini memberikan dukungan minimal untuk manajemen memori objek string dan manipulasi buffer dasar. Untuk objek string tingkat lanjut lainnya, lihat CStringT Class
.
Persyaratan
Header: atlsimpstr.h
CSimpleStringT::Append
CSimpleStringT
Menambahkan objek ke objek yang sudah adaCSimpleStringT
.
Sintaks
void Append(const CSimpleStringT& strSrc);
void Append(PCXSTR pszSrc, int nLength);
void Append(PCXSTR pszSrc);
Parameter
strSrc
Objek CSimpleStringT
yang akan ditambahkan.
pszSrc
Penunjuk ke string yang berisi karakter yang akan ditambahkan.
nLength
Jumlah karakter yang akan ditambahkan.
Keterangan
Panggil metode ini untuk menambahkan objek yang ada CSimpleStringT
ke objek lain CSimpleStringT
.
Contoh
Contoh berikut menunjukkan penggunaan 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
Menambahkan karakter ke objek yang ada CSimpleStringT
.
Sintaks
void AppendChar(XCHAR ch);
Parameter
ch
Karakter yang akan ditambahkan
Keterangan
Panggil fungsi ini untuk menambahkan karakter yang ditentukan ke akhir objek yang ada CSimpleStringT
.
CSimpleStringT::CopyChars
Menyalin karakter atau karakter ke CSimpleStringT
objek.
Sintaks
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();
Parameter
pchDest
Penunjuk ke string karakter.
nDestLen
Ukuran buffer pchDest
pchSrc
Penunjuk ke string yang berisi karakter yang akan disalin.
nChars
Jumlah pchSrc
karakter yang akan disalin.
Keterangan
Panggil metode ini untuk menyalin karakter dari pchSrc
ke pchDest
string.
Contoh
Contoh berikut menunjukkan penggunaan 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);
Output dari contoh ini adalah sebagai berikut:
xxxxxxxxxxxxxxxxxxx
Hello world!xxxxxxx
CSimpleStringT::CopyCharsOverlapped
Menyalin karakter atau karakter ke CSimpleStringT
objek.
Sintaks
static void CopyCharsOverlapped(
XCHAR* pchDest,
const XCHAR* pchSrc,
int nChars) throw();
Parameter
pchDest
Penunjuk ke string karakter.
pchSrc
Penunjuk ke string yang berisi karakter yang akan disalin.
nChars
Jumlah pchSrc
karakter yang akan disalin.
Keterangan
Panggil metode ini untuk menyalin karakter dari pchSrc
ke pchDest
string. Tidak seperti CopyChars
, CopyCharsOverlapped
menyediakan metode yang aman untuk menyalin dari buffer karakter yang mungkin tumpang tindih.
Contoh
Lihat contoh untuk CSimpleStringT::CopyChars
, atau kode sumber untuk CSimpleStringT::SetString
(terletak di atlsimpstr.h
).
CSimpleStringT::CSimpleStringT
Membuat CSimpleStringT
objek.
Sintaks
CSimpleStringT(const XCHAR* pchSrc, int nLength, IAtlStringMgr* pStringMgr);
CSimpleStringT(PCXSTR pszSrc, IAtlStringMgr* pStringMgr);
CSimpleStringT(const CSimpleStringT& strSrc);
explicit CSimpleStringT(IAtlStringMgr* pStringMgr) throw();
Parameter
strSrc
Objek yang CSimpleStringT
ada untuk disalin ke dalam objek ini CSimpleStringT
.
pchSrc
Penunjuk ke array karakter panjang nLength
, bukan null dihentikan.
pszSrc
Untai (karakter) null-terminated yang akan disalin ke dalam objek ini CSimpleStringT
.
nLength
Jumlah karakter dalam pch
.
pStringMgr
Penunjuk ke manajer CSimpleStringT
memori objek. Untuk informasi selengkapnya tentang IAtlStringMgr
dan manajemen memori untuk CSimpleStringT
, lihat Manajemen Memori dan CStringT
.
Keterangan
Buat objek baru CSimpleStringT
. Karena konstruktor menyalin data input ke penyimpanan baru yang dialokasikan, pengecualian memori dapat dihasilkan.
Contoh
Contoh berikut menunjukkan penggunaan CSimpleStringT::CSimpleStringT
dengan menggunakan ATL typedef
CSimpleString
. CSimpleString
adalah spesialisasi yang umum digunakan dari templat CSimpleStringT
kelas .
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
Menjadikan objek ini CSimpleStringT
string kosong dan membebaskan memori sebagaimana mewajarkan.
Sintaks
void Empty() throw();
Keterangan
Untuk informasi selengkapnya, lihat String: CString
Pembersihan Pengecualian.
Contoh
Contoh berikut menunjukkan penggunaan CSimpleStringT::Empty
.
CAtlString basestr;
IAtlStringMgr* pMgr = basestr.GetManager();
CSimpleString s(pMgr);
ASSERT(s.IsEmpty());
CSimpleStringT::FreeExtra
Membebaskan memori tambahan yang sebelumnya dialokasikan oleh string tetapi tidak lagi diperlukan.
Sintaks
void FreeExtra();
Keterangan
Ini harus mengurangi overhead memori yang digunakan oleh objek string. Metode ini merealokasi buffer ke panjang yang tepat yang dikembalikan oleh GetLength
.
Contoh
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());
Output dari contoh ini adalah sebagai berikut:
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
Mengambil panjang objek yang CSimpleStringT
dialokasikan.
Sintaks
int GetAllocLength() const throw();
Tampilkan Nilai
Jumlah karakter yang dialokasikan untuk objek ini.
Keterangan
Panggil metode ini untuk menentukan jumlah karakter yang dialokasikan untuk objek ini CSimpleStringT
. Lihat FreeExtra
contoh memanggil fungsi ini.
CSimpleStringT::GetAt
Mengembalikan satu karakter dari CSimpleStringT
objek.
Sintaks
XCHAR GetAt(int iChar) const;
Parameter
iChar
Indeks karakter berbasis nol dalam CSimpleStringT
objek. Parameter iChar
harus lebih besar dari atau sama dengan 0 dan kurang dari nilai yang dikembalikan oleh GetLength
. Jika tidak, GetAt
akan menghasilkan pengecualian.
Tampilkan Nilai
Yang XCHAR
berisi karakter pada posisi yang ditentukan dalam string.
Keterangan
Panggil metode ini untuk mengembalikan satu karakter yang ditentukan oleh iChar
. Operator subskrip yang kelebihan beban ([]
) adalah alias yang nyaman untuk GetAt
. Terminator null dapat diatasi tanpa menghasilkan pengecualian dengan menggunakan GetAt
. Namun, itu tidak dihitung oleh GetLength
, dan nilai yang dikembalikan adalah 0.
Contoh
Contoh berikut menunjukkan cara menggunakan CSimpleStringT::GetAt
.
CSimpleString s(_T("abcdef"), pMgr);
ASSERT(s.GetAt(2) == _T('c'));
CSimpleStringT::GetBuffer
Mengembalikan penunjuk ke buffer karakter internal untuk CSimpleStringT
objek.
Sintaks
PXSTR GetBuffer(int nMinBufferLength);
PXSTR GetBuffer();
Parameter
nMinBufferLength
Jumlah minimum karakter yang dapat ditahan oleh buffer karakter. Nilai ini tidak menyertakan ruang untuk terminator null.
Jika nMinBufferLength
lebih besar dari panjang buffer saat ini, GetBuffer
menghancurkan buffer saat ini, menggantinya dengan buffer dengan ukuran yang diminta, dan mengatur ulang jumlah referensi objek menjadi nol. Jika sebelumnya Anda telah memanggil LockBuffer
buffer ini, Anda akan kehilangan kunci buffer.
Tampilkan Nilai
Penunjuk PXSTR
ke buffer karakter objek (dihentikan null).
Keterangan
Panggil metode ini untuk mengembalikan konten CSimpleStringT
buffer objek. Yang dikembalikan PXSTR
bukan konstanta dan oleh karena itu memungkinkan modifikasi CSimpleStringT
langsung konten.
Jika Anda menggunakan penunjuk yang dikembalikan oleh GetBuffer
untuk mengubah konten string, Anda harus memanggil ReleaseBuffer
untuk memperbarui status CSimpleStringT
internal sebelum Anda menggunakan metode lain CSimpleStringT
.
Alamat yang dikembalikan oleh GetBuffer
mungkin tidak valid setelah panggilan ke ReleaseBuffer
karena operasi tambahan CSimpleStringT
dapat menyebabkan CSimpleStringT
buffer direalokasikan. Buffer tidak dialokasikan jika Anda tidak mengubah panjang CSimpleStringT
.
Memori buffer secara otomatis dibebaskan ketika CSimpleStringT
objek dihancurkan.
Jika Anda melacak sendiri panjang string, Anda tidak boleh menambahkan karakter null yang mengakhiri. Namun, Anda harus menentukan panjang string akhir saat merilis buffer dengan ReleaseBuffer
. Jika Anda menambahkan karakter null yang mengakhiri, Anda harus meneruskan -1 (default) untuk panjangnya. ReleaseBuffer
kemudian menentukan panjang buffer.
Jika memori tidak cukup untuk memenuhi GetBuffer
permintaan, metode ini akan melempar CMemoryException*
.
Contoh
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
Mengembalikan penunjuk ke buffer karakter internal untuk CSimpleStringT
objek, memotong atau menumbuhkan panjangnya jika perlu agar sama persis dengan panjang yang ditentukan dalam nLength
.
Sintaks
PXSTR GetBufferSetLength(int nLength);
Parameter
nLength
Ukuran yang tepat dari CSimpleStringT
buffer karakter dalam karakter.
Tampilkan Nilai
PXSTR
Penunjuk ke buffer karakter objek (dihentikan null).
Keterangan
Panggil metode ini untuk mengambil panjang tertentu dari buffer CSimpleStringT
internal objek. Pointer yang dikembalikan PXSTR
tidak const
dan dengan demikian memungkinkan modifikasi CSimpleStringT
langsung konten.
Jika Anda menggunakan penunjuk yang dikembalikan oleh GetBufferSetLength
untuk mengubah konten string, panggil ReleaseBuffer
untuk memperbarui status CSimpleStringT
internal sebelum Anda menggunakan metode lain CSimpleStringT
.
Alamat yang dikembalikan oleh GetBufferSetLength
mungkin tidak valid setelah panggilan ke ReleaseBuffer
karena operasi tambahan CSimpleStringT
dapat menyebabkan CSimpleStringT
buffer direalokasikan. Buffer tidak ditetapkan ulang jika Anda tidak mengubah panjang CSimpleStringT
.
Memori buffer secara otomatis dibebaskan ketika CSimpleStringT
objek dihancurkan.
Jika Anda melacak sendiri panjang string, jangan tambahkan karakter null yang mengakhiri. Anda harus menentukan panjang string akhir saat merilis buffer dengan menggunakan ReleaseBuffer
. Jika Anda menambahkan karakter null yang mengakhiri saat anda memanggil ReleaseBuffer
, pass -1 (default) untuk panjang ke ReleaseBuffer
, dan ReleaseBuffer
akan melakukan strlen
pada buffer untuk menentukan panjangnya.
Untuk informasi selengkapnya tentang penghitungan referensi, lihat artikel berikut ini:
- Mengelola Masa Pakai Objek melalui Penghitungan Referensi di Windows SDK.
- Menerapkan Penghitungan Referensi di Windows SDK.
- Aturan untuk Mengelola Jumlah Referensi di Windows SDK.
Contoh
Contoh berikut menunjukkan penggunaan 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
Mengembalikan jumlah karakter dalam CSimpleStringT
objek.
Sintaks
int GetLength() const throw();
Tampilkan Nilai
Jumlah karakter dalam string.
Keterangan
Panggil metode ini untuk mengembalikan jumlah karakter dalam objek. Jumlah tidak menyertakan terminator null.
Untuk set karakter multibyte (MBCS), GetLength
menghitung setiap karakter 8-bit; yaitu, byte prospek dan jejak dalam satu karakter multibyte dihitung sebagai dua byte. Lihat FreeExtra
contoh memanggil fungsi ini.
CSimpleStringT::GetManager
Mengambil manajer CSimpleStringT
memori objek.
Sintaks
IAtlStringMgr* GetManager() const throw();
Tampilkan Nilai
Penunjuk ke manajer memori untuk CSimpleStringT
objek.
Keterangan
Panggil metode ini untuk mengambil manajer memori yang CSimpleStringT
digunakan oleh objek. Untuk informasi selengkapnya tentang manajer memori dan objek string, lihat Manajemen Memori dan CStringT
.
CSimpleStringT::GetString
Mengambil string karakter.
Sintaks
PCXSTR GetString() const throw();
Tampilkan Nilai
Penunjuk ke string karakter null-terminated.
Keterangan
Panggil metode ini untuk mengambil string karakter yang terkait dengan CSimpleStringT
objek.
Catatan
Penunjuk yang dikembalikan PCXSTR
adalah const
dan tidak mengizinkan modifikasi CSimpleStringT
langsung konten.
Contoh
Contoh berikut menunjukkan penggunaan CSimpleStringT::GetString
.
CAtlString basestr;
IAtlStringMgr* pMgr = basestr.GetManager();
CSimpleString str(pMgr);
str += _T("Cup soccer is best!");
_tprintf_s(_T("%s"), str.GetString());
Output dari contoh ini adalah sebagai berikut:
Cup soccer is best!
CSimpleStringT::IsEmpty
CSimpleStringT
Menguji objek untuk kondisi kosong.
Sintaks
bool IsEmpty() const throw();
Tampilkan Nilai
Mengembalikan TRUE
jika CSimpleStringT
objek memiliki panjang 0; jika tidak FALSE
.
Keterangan
Panggil metode ini untuk menentukan apakah objek berisi string kosong.
Contoh
Contoh berikut menunjukkan penggunaan CSimpleStringT::IsEmpty
.
CSimpleString s(pMgr);
ASSERT(s.IsEmpty());
CSimpleStringT::LockBuffer
Menonaktifkan penghitungan referensi dan melindungi string dalam buffer.
Sintaks
PXSTR LockBuffer();
Tampilkan Nilai
Penunjuk ke CSimpleStringT
objek atau string null-terminated.
Keterangan
Panggil metode ini untuk mengunci buffer CSimpleStringT
objek. Dengan memanggil LockBuffer
, Anda membuat salinan string, dengan -1 untuk jumlah referensi. Ketika nilai jumlah referensi adalah -1, string dalam buffer dianggap dalam status "terkunci". Saat dalam keadaan terkunci, string dilindungi dengan dua cara:
Tidak ada string lain yang bisa mendapatkan referensi ke data dalam string terkunci, bahkan jika string tersebut ditetapkan ke string terkunci.
String terkunci tidak akan pernah mereferensikan string lain, bahkan jika string lain disalin ke string terkunci.
Dengan mengunci string di buffer, Anda memastikan bahwa penangguhan eksklusif string pada buffer akan tetap utuh.
Setelah Anda selesai dengan LockBuffer
, panggil UnlockBuffer
untuk mengatur ulang jumlah referensi ke 1.
Catatan
Jika Anda memanggil GetBuffer
pada buffer terkunci dan Anda mengatur GetBuffer
parameter nMinBufferLength
ke lebih besar dari panjang buffer saat ini, Anda akan kehilangan kunci buffer. Panggilan seperti itu untuk GetBuffer
menghancurkan buffer saat ini, menggantinya dengan buffer ukuran yang diminta, dan mengatur ulang jumlah referensi menjadi nol.
Untuk informasi selengkapnya tentang penghitungan referensi, lihat artikel berikut ini:
Mengelola Masa Pakai Objek melalui Penghitungan Referensi di Windows SDK
Menerapkan Penghitungan Referensi di Windows SDK
Aturan untuk Mengelola Jumlah Referensi di Windows SDK
Contoh
Contoh berikut menunjukkan penggunaan 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();
Output dari contoh ini adalah sebagai berikut:
l
CSimpleStringT::operator[]
Panggil fungsi ini untuk mengakses satu karakter array karakter.
Sintaks
XCHAR operator[](int iChar) const;
Parameter
iChar
Indeks berbasis nol karakter dalam string.
Keterangan
Operator subskrip () yang kelebihan beban mengembalikan[]
satu karakter yang ditentukan oleh indeks berbasis nol di iChar
. Operator ini adalah pengganti yang nyaman untuk GetAt
fungsi anggota.
Catatan
Anda dapat menggunakan operator subskrip ([]
) untuk mendapatkan nilai karakter dalam CSimpleStringT
, tetapi Anda tidak dapat menggunakannya untuk mengubah nilai karakter dalam CSimpleStringT
.
Contoh
Contoh berikut menunjukkan penggunaan CSimpleStringT::operator []
.
CSimpleString s(_T("abc"), pMgr);
ASSERT(s[1] == _T('b'));
CSimpleStringT::operator []
Panggil fungsi ini untuk mengakses satu karakter array karakter.
Sintaks
XCHAR operator[](int iChar) const;
Parameter
iChar
Indeks berbasis nol karakter dalam string.
Keterangan
Operator subskrip () yang kelebihan beban mengembalikan[]
satu karakter yang ditentukan oleh indeks berbasis nol di iChar
. Operator ini adalah pengganti yang nyaman untuk GetAt
fungsi anggota.
Catatan
Anda dapat menggunakan operator subskrip ([]
) untuk mendapatkan nilai karakter dalam CSimpleStringT
, tetapi Anda tidak dapat menggunakannya untuk mengubah nilai karakter dalam CSimpleStringT
.
CSimpleStringT::operator +=
Menggabungkan string atau karakter baru ke akhir string yang ada.
Sintaks
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);
Parameter
pszSrc
Penunjuk ke string null-terminated.
strSrc
Penunjuk ke objek yang sudah ada CSimpleStringT
.
ch
Karakter yang akan ditambahkan.
Keterangan
Operator menerima objek atau karakter lain CSimpleStringT
. Perhatikan bahwa pengecualian memori dapat terjadi setiap kali Anda menggunakan operator perangkaian ini karena penyimpanan baru dapat dialokasikan untuk karakter yang ditambahkan ke objek ini CSimpleStringT
.
Contoh
Contoh berikut menunjukkan penggunaan CSimpleStringT::operator +=
.
CSimpleString str(_T("abc"), pMgr);
ASSERT(_tcscmp((str += _T("def")), _T("abcdef")) == 0);
CSimpleStringT::operator =
Menetapkan nilai baru ke CSimpleStringT
objek.
Sintaks
CSimpleStringT& operator =(PCXSTR pszSrc);
CSimpleStringT& operator =(const CSimpleStringT& strSrc);
Parameter
pszSrc
Penunjuk ke string null-terminated.
strSrc
Penunjuk ke objek yang sudah ada CSimpleStringT
.
Keterangan
Jika string tujuan (sisi kiri) sudah cukup besar untuk menyimpan data baru, tidak ada alokasi memori baru yang dilakukan. Perhatikan bahwa pengecualian memori dapat terjadi setiap kali Anda menggunakan operator penugasan karena penyimpanan baru sering dialokasikan untuk menyimpan objek yang CSimpleStringT
dihasilkan.
Contoh
Contoh berikut menunjukkan penggunaan 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
Secara langsung mengakses karakter yang CSimpleStringT
disimpan dalam objek sebagai string gaya C.
Sintaks
operator PCXSTR() const throw();
Tampilkan Nilai
Penunjuk karakter ke data string.
Keterangan
Tidak ada karakter yang disalin; hanya penunjuk yang dikembalikan. Berhati-hatilah dengan operator ini. Jika Anda mengubah CString
objek setelah mendapatkan penunjuk karakter, Anda dapat menyebabkan realokasi memori yang membatalkan penunjuk.
Contoh
Contoh berikut menunjukkan penggunaan 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
Penunjuk ke string konstanta.
Sintaks
typedef ChTraitsBase< BaseType >::PCXSTR PCXSTR;
CSimpleStringT::Preallocate
Mengalokasikan jumlah byte tertentu untuk CSimpleStringT
objek.
Sintaks
void Preallocate( int nLength);
Parameter
nLength
Ukuran yang tepat dari CSimpleStringT
buffer karakter dalam karakter.
Keterangan
Panggil metode ini untuk mengalokasikan ukuran buffer tertentu untuk CSimpleStringT
objek.
CSimpleStringT
STATUS_NO_MEMORY
menghasilkan pengecualian jika tidak dapat mengalokasikan ruang untuk buffer karakter. Secara default, alokasi memori dilakukan oleh fungsi HeapAlloc
API WIN32 atau HeapReAlloc
.
Contoh
Contoh berikut menunjukkan penggunaan 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());
Output dari contoh ini adalah sebagai berikut:
Allocated length: 0
Allocated length: 103
CSimpleStringT::PXSTR
Penunjuk ke string.
Sintaks
typedef ChTraitsBase< BaseType >::PXSTR PXSTR;
CSimpleStringT::ReleaseBuffer
Merilis kontrol buffer yang dialokasikan oleh GetBuffer
.
Sintaks
void ReleaseBuffer(int nNewLength = -1);
Parameter
nNewLength
Panjang baru string dalam karakter, tidak menghitung terminator null. Jika string null dihentikan, nilai default -1 mengatur CSimpleStringT
ukuran ke panjang string saat ini.
Keterangan
Panggil metode ini untuk merealokasi atau membebaskan buffer objek string. Jika Anda tahu bahwa string dalam buffer dihentikan null, Anda dapat menghilangkan nNewLength
argumen. Jika string Anda tidak dihentikan null, gunakan nNewLength
untuk menentukan panjangnya. Alamat yang dikembalikan oleh GetBuffer
tidak valid setelah panggilan ke ReleaseBuffer
atau operasi lainnya CSimpleStringT
.
Contoh
Contoh berikut menunjukkan penggunaan 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
Merilis kontrol buffer yang dialokasikan oleh GetBuffer
.
Sintaks
void ReleaseBufferSetLength(int nNewLength);
Parameter
nNewLength
Panjang string yang dirilis
Keterangan
Fungsi ini secara fungsional mirip ReleaseBuffer
dengan kecuali bahwa panjang yang valid untuk objek string harus diteruskan.
CSimpleStringT::SetAt
Mengatur satu karakter dari CSimpleStringT
objek.
Sintaks
void SetAt(int iChar, XCHAR ch);
Parameter
iChar
Indeks karakter berbasis nol dalam CSimpleStringT
objek. Parameter iChar
harus lebih besar dari atau sama dengan 0 dan kurang dari nilai yang dikembalikan oleh GetLength
.
ch
Karakter baru.
Keterangan
Panggil metode ini untuk menimpa karakter yang terletak di iChar
. Metode ini tidak akan memperbesar string jika iChar
melebihi batas string yang ada.
Contoh
Contoh berikut menunjukkan penggunaan CSimpleStringT::SetAt
.
CSimpleString s(_T("abcdef"), pMgr);
s.SetAt(1, _T('a'));
ASSERT(_tcscmp(s, _T("aacdef")) == 0);
CSimpleStringT::SetManager
Menentukan manajer CSimpleStringT
memori objek.
Sintaks
void SetManager(IAtlStringMgr* pStringMgr);
Parameter
pStringMgr
Penunjuk ke manajer memori baru.
Keterangan
Panggil metode ini untuk menentukan manajer memori baru yang digunakan oleh CSimpleStringT
objek. Untuk informasi selengkapnya tentang manajer memori dan objek string, lihat Manajemen Memori dan CStringT
.
Contoh
Contoh berikut menunjukkan penggunaan CSimpleStringT::SetManager
.
CSimpleString s(pMgr);
s.SetManager(pCustomMgr);
CSimpleStringT::SetString
Mengatur string CSimpleStringT
objek.
Sintaks
void SetString(PCXSTR pszSrc, int nLength);
void SetString(PCXSTR pszSrc);
Parameter
pszSrc
Penunjuk ke string null-terminated.
nLength
Jumlah karakter dalam pszSrc
.
Keterangan
Salin string ke CSimpleStringT
dalam objek. SetString
menimpa data string yang lebih lama di buffer.
Kedua versi SetString
pemeriksaan apakah pszSrc
itu penunjuk null, dan jika ya, melemparkan E_INVALIDARG
kesalahan.
Versi parameter satu dari SetString
mengharapkan pszSrc
untuk menunjuk ke string yang dihentikan null.
Versi SetString
dua parameter juga mengharapkan pszSrc
menjadi string yang dihentikan null. Ini menggunakan nLength
sebagai panjang string kecuali menemukan terminator null terlebih dahulu.
Versi SetString
dua parameter juga memeriksa apakah pszSrc
menunjuk ke lokasi di buffer saat ini di CSimpleStringT
. Dalam kasus khusus ini, SetString
menggunakan fungsi salinan memori yang tidak menimpa data string karena menyalin data string kembali ke buffernya.
Contoh
Contoh berikut menunjukkan penggunaan 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
Mengembalikan jumlah karakter dalam string yang ditentukan.
Sintaks
ATL_NOINLINE static int StringLength(PCXSTR psz) throw();
Parameter
psz
Penunjuk ke string null-terminated.
Tampilkan Nilai
Jumlah karakter dalam psz
; tidak menghitung terminator null.
Keterangan
Panggil metode ini untuk mengambil jumlah karakter dalam string yang ditujukkan oleh psz
.
Contoh
Contoh berikut menunjukkan penggunaan CSimpleStringT::StringLength
.
ASSERT(CSimpleString::StringLength(_T("soccer")) == 6);
CSimpleStringT::Truncate
Memotong string ke panjang baru.
Sintaks
void Truncate(int nNewLength);
Parameter
nNewLength
Panjang baru string.
Keterangan
Panggil metode ini untuk memotong konten string ke panjang baru.
Catatan
Ini tidak mempengaruhi panjang buffer yang dialokasikan. Untuk mengurangi atau menambah buffer saat ini, lihat FreeExtra
dan Preallocate
.
Contoh
Contoh berikut menunjukkan penggunaan 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);
Output dari contoh ini adalah:
String length: 9 / Allocated length: 15
Contents: abcdefghi
String length: 4 / Allocated length: 15
Contents: abcd
CSimpleStringT::UnlockBuffer
Membuka kunci buffer CSimpleStringT
objek.
Sintaks
void UnlockBuffer() throw();
Keterangan
Panggil metode ini untuk mengatur ulang jumlah referensi string ke 1.
CSimpleStringT
Destruktor secara otomatis memanggil UnlockBuffer
untuk memastikan bahwa buffer tidak terkunci ketika destruktor dipanggil. Untuk contoh metode ini, lihat LockBuffer
.
CSimpleStringT::~CSimpleStringT
Menghancurkan objek CSimpleStringT
.
Sintaks
~CSimpleStringT() throw();
Keterangan
Panggil metode ini untuk menghancurkan CSimpleStringT
objek.