Bagikan melalui


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 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:

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:

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.

CSimpleStringTSTATUS_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.

Lihat juga

Bagan Hierarki
Kelas Bersama ATL/MFC