Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
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 typedefCSimpleString.
CSimpleString adalah spesialisasi yang umum digunakan dari templat CSimpleStringTkelas .
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 +=
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.