Share via


basic_string Kelas

Urutan yang dikontrol oleh objek jenis basic_string adalah kelas string C++ Standar dan disebut sebagai string, tetapi tidak boleh dikacaukan dengan string gaya C yang dihentikan null yang digunakan di seluruh Pustaka Standar C++. String C++ Standar adalah kontainer yang memungkinkan penggunaan string sebagai jenis normal, seperti operasi perbandingan dan perangkaian, iterator, algoritma Pustaka Standar C++, dan menyalin dan menetapkan dengan memori yang dikelola alokator kelas. Jika Anda perlu mengonversi string C++ Standar menjadi string gaya C yang dihentikan null, gunakan basic_string::c_str anggota.

Sintaks

template <class CharType, class Traits = char_traits<CharType>, class Allocator = allocator<CharType>>
class basic_string;

Parameter

CharType
Jenis data dari satu karakter yang akan disimpan dalam string. Pustaka Standar C++ menyediakan spesialisasi templat kelas ini, dengan definisi string jenis untuk elemen jenis char, , wstringuntuk wchar_t, u16string untuk char16_t, dan u32string untuk char32_t.

Traits
Berbagai properti penting elemen CharType dalam spesialisasi basic_string dijelaskan oleh kelas Traits. Nilai defaultnya adalah char_traits<CharType>.

Allocator
Jenis yang mewakili objek alokator tersimpan yang merangkum detail tentang alokasi string dan alokasi memori. Nilai defaultnya adalah allocator<CharType>.

Konstruktor

Konstruktor Deskripsi
basic_string Membuat string yang kosong atau diinisialisasi oleh karakter tertentu atau yang merupakan salinan semua atau bagian dari beberapa objek string atau C-string lainnya.

Typedefs

Nama jenis Deskripsi
allocator_type Jenis yang mewakili allocator kelas untuk objek string.
const_iterator Jenis yang menyediakan iterator akses acak yang dapat mengakses dan membaca const elemen dalam string.
const_pointer Jenis yang menyediakan penunjuk ke const elemen dalam string.
const_reference Jenis yang menyediakan referensi ke elemen yang const disimpan dalam string untuk membaca dan melakukan const operasi.
const_reverse_iterator Jenis yang menyediakan iterator akses acak yang dapat membaca elemen apa pun const dalam string.
difference_type Jenis yang menyediakan perbedaan antara dua iterator yang merujuk ke elemen dalam string yang sama.
iterator Jenis yang menyediakan iterator akses acak yang dapat membaca atau memodifikasi elemen apa pun dalam string.
npos Nilai integral yang tidak ditandatangani diinisialisasi ke -1 yang menunjukkan "tidak ditemukan" atau "semua karakter yang tersisa" ketika fungsi pencarian gagal.
pointer Jenis yang menyediakan penunjuk ke elemen karakter dalam string atau array karakter.
reference Jenis yang menyediakan referensi ke elemen yang disimpan dalam string.
reverse_iterator Jenis yang menyediakan iterator akses acak yang dapat membaca atau memodifikasi elemen dalam string terbalik.
size_type Jenis integral yang tidak ditandatangani untuk jumlah elemen dalam string.
traits_type Jenis untuk sifat karakter elemen yang disimpan dalam string.
value_type Jenis yang mewakili jenis karakter yang disimpan dalam string.

Fungsi anggota

Fungsi anggota Deskripsi
append Menambahkan karakter ke akhir string.
assign Menetapkan nilai karakter baru ke konten string.
at Mengembalikan referensi ke elemen di lokasi tertentu dalam string.
back
begin Mengembalikan iterator yang menangani elemen pertama dalam string.
c_str Mengonversi konten string sebagai string bergaya C, dihentikan null.
capacity Mengembalikan jumlah elemen terbesar yang dapat disimpan dalam string tanpa meningkatkan alokasi memori string.
cbegin Mengembalikan iterator const yang menangani elemen pertama dalam string.
cend Mengembalikan iterator const yang membahas lokasi yang menggantikan elemen terakhir dalam string.
clear Menghapus semua elemen string.
compare Membandingkan string dengan string tertentu untuk menentukan apakah kedua string sama atau jika string secara leksikografis kurang dari yang lain.
copy Menyalin paling banyak jumlah karakter tertentu dari posisi terindeks dalam string sumber ke array karakter target. Ditolak. Gunakan basic_string::_Copy_s sebagai gantinya.
crbegin Mengembalikan iterator const yang membahas elemen pertama dalam string terbalik.
crend Mengembalikan iterator const yang membahas lokasi yang menggantikan elemen terakhir dalam string terbalik.
_Copy_s Microsoft Specific: Menyalin paling banyak jumlah karakter tertentu dari posisi terindeks dalam string sumber ke array karakter target.
data Mengonversi konten string menjadi array karakter.
empty Menguji apakah string berisi karakter.
end Mengembalikan iterator yang membahas lokasi yang menggantikan elemen terakhir dalam string.
ends_withC++20 Memeriksa apakah string diakhiri dengan akhiran yang ditentukan.
erase Menghapus elemen atau rentang elemen dalam string dari posisi tertentu.
find Mencari string dalam arah maju untuk kemunculan pertama substring yang cocok dengan urutan karakter tertentu.
find_first_not_of Mencari string untuk karakter pertama yang bukan elemen apa pun dari string yang ditentukan.
find_first_of Mencari string untuk karakter pertama yang cocok dengan elemen apa pun dari string yang ditentukan.
find_last_not_of Mencari string untuk karakter terakhir yang bukan elemen apa pun dari string yang ditentukan.
find_last_of Mencari string untuk karakter terakhir yang merupakan elemen dari string tertentu.
front Mengembalikan referensi ke elemen pertama dalam string.
get_allocator Mengembalikan salinan objek yang allocator digunakan untuk membuat string.
insert Menyisipkan elemen, beberapa elemen, atau rentang elemen ke dalam string pada posisi yang ditentukan.
length Mengembalikan jumlah elemen saat ini dalam string.
max_size Mengembalikan jumlah maksimum karakter yang dapat dimuat string.
pop_back Menghapus elemen terakhir string.
push_back Menambahkan elemen ke akhir string.
rbegin Mengembalikan iterator ke elemen pertama dalam string terbalik.
rend Mengembalikan iterator yang menunjuk tepat di luar elemen terakhir dalam string terbalik.
replace Mengganti elemen dalam string pada posisi tertentu dengan karakter atau karakter tertentu yang disalin dari rentang atau string atau string C lainnya.
reserve Mengatur kapasitas string ke angka setidaknya sehebat angka yang ditentukan.
resize Menentukan ukuran baru untuk string, menambahkan, atau menghapus elemen sesuai kebutuhan.
rfind Mencari string ke arah mundur untuk kemunculan pertama substring yang cocok dengan urutan karakter tertentu.
shrink_to_fit Membuang kelebihan kapasitas string.
size Mengembalikan jumlah elemen saat ini dalam string.
starts_withC++20 Memeriksa apakah string dimulai dengan awalan yang ditentukan.
substr Menyalin substring paling banyak beberapa karakter dari string yang dimulai dari posisi tertentu.
swap Tukarkan konten dua string.

Operators

Operator Deskripsi
operator+= Menambahkan karakter ke string.
operator= Menetapkan nilai karakter baru ke konten string.
operator[] Menyediakan referensi ke karakter dengan indeks tertentu dalam string.

Harfiah

Header yang menentukan basic_string juga menentukan literal yang ditentukan pengguna berikut, yang membuat string dari jenis yang ditentukan dari parameter input.

Deklarasi Deskripsi
inline string operator"" s(const char* str, size_t len) Kembali: string(str, len)
inline string operator"" s(const wchar_t* str, size_t len) Kembali: wstring(str, len)
inline basic_string<char8_t> operator"" s(const char8_t* str, size_t len) Kembali: basic_string<char8_t>(str, len)
inline u16string operator"" s(const char16_t* str, size_t len) Kembali: u16string(str, len)
inline u32string operator"" s(const char32_t* str, size_t len) Kembali: u32string(str, len)

Keterangan

Jika fungsi diminta untuk menghasilkan urutan yang lebih panjang dari max_size elemen, fungsi melaporkan kesalahan panjang dengan melemparkan objek jenis length_error.

Referensi, penunjuk, dan iterator yang menunjuk elemen urutan terkontrol dapat menjadi tidak valid setelah panggilan apa pun ke fungsi yang mengubah urutan terkontrol, atau setelah panggilan pertama ke fungsi non-anggotaconst .

Persyaratan

Header:<string>

Namespace: std

basic_string::allocator_type

Jenis yang mewakili kelas alokator untuk objek string.

typedef Allocator allocator_type;

Keterangan

Jenisnya adalah sinonim untuk parameter Allocatortemplat .

Contoh

// basic_string_allocator_type.cpp
// compile with: /EHsc
#include <string>
#include <iostream>

int main( )
{
   using namespace std;
   // The following lines declare objects
   // that use the default allocator.
   string s1;
   basic_string <char>::allocator_type xchar = s1.get_allocator( );
   // You can now call functions on the allocator class xchar used by s1
}

basic_string::append

Menambahkan karakter ke akhir string.

basic_string<CharType, Traits, Allocator>& append(
    const value_type* ptr);

basic_string<CharType, Traits, Allocator>& append(
    const value_type* ptr,
    size_type count);

basic_string<CharType, Traits, Allocator>& append(
    const basic_string<CharType, Traits, Allocator>& str,
    size_type offset,
    size_type count);

basic_string<CharType, Traits, Allocator>& append(
    const basic_string<CharType, Traits, Allocator>& str);

basic_string<CharType, Traits, Allocator>& append(
    size_type count,
    value_type char_value);

template <class InputIterator>
basic_string<CharType, Traits, Allocator>& append(
    InputIterator first,
    InputIterator last);

basic_string<CharType, Traits, Allocator>& append(
    const_pointer first,
    const_pointer last);

basic_string<CharType, Traits, Allocator>& append(
    const_iterator first,
    const_iterator last);

Parameter

ptr
String C yang akan ditambahkan.

str
String yang karakternya akan ditambahkan.

offset
Indeks bagian dari string sumber yang menyediakan karakter yang akan ditambahkan.

count
Jumlah karakter yang akan ditambahkan, paling banyak, dari string sumber.

char_value
Nilai karakter yang akan ditambahkan.

first
Iterator input yang menangani elemen pertama dalam rentang yang akan ditambahkan.

last
Iterator input, const_pointer, atau const_iterator mengatasi posisi yang melampaui elemen terakhir dalam rentang yang akan ditambahkan.

Nilai hasil

Referensi ke objek string yang sedang ditambahkan dengan karakter yang diteruskan oleh fungsi anggota.

Keterangan

Karakter dapat ditambahkan ke string menggunakan operator+= fungsi append atau anggota atau push_back. operator+= menambahkan nilai argumen tunggal sementara fungsi anggota multi-argumen append memungkinkan bagian tertentu dari string ditentukan untuk ditambahkan.

Contoh

// basic_string_append.cpp
// compile with: /EHsc
#include <string>
#include <iostream>

int main( )
{
   using namespace std;

   // The first member function
   // appending a C-string to a string
   string str1a ( "Hello " );
   cout << "The original string str1 is: " << str1a << endl;
   const char *cstr1a = "Out There ";
   cout << "The C-string cstr1a is: " << cstr1a << endl;
   str1a.append ( cstr1a );
   cout << "Appending the C-string cstr1a to string str1 gives: "
        << str1a << "." << endl << endl;

   // The second member function
   // appending part of a C-string to a string
   string str1b ( "Hello " );
   cout << "The string str1b is: " << str1b << endl;
   const char *cstr1b = "Out There ";
   cout << "The C-string cstr1b is: " << cstr1b << endl;
   str1b.append ( cstr1b , 3 );
   cout << "Appending the 1st part of the C-string cstr1b "
        << "to string str1 gives: " << str1b << "."
        << endl << endl;

   // The third member function
   // appending part of one string to another
   string str1c ( "Hello " ), str2c ( "Wide World " );
   cout << "The string str2c is: " << str2c << endl;
   str1c.append ( str2c , 5 , 5 );
   cout << "The appended string str1 is: "
        << str1c << "." << endl << endl;

   // The fourth member function
   // appending one string to another in two ways,
   // comparing append and operator [ ]
   string str1d ( "Hello " ), str2d ( "Wide " ), str3d ( "World " );
   cout << "The  string str2d is: " << str2d << endl;
   str1d.append ( str2d );
   cout << "The appended string str1d is: "
        << str1d << "." << endl;
   str1d += str3d;
   cout << "The doubly appended strig str1 is: "
        << str1d << "." << endl << endl;

   // The fifth member function
   // appending characters to a string
   string str1e ( "Hello " );
   str1e.append ( 4 , '!' );
   cout << "The string str1 appended with exclamations is: "
        << str1e << endl << endl;

   // The sixth member function
   // appending a range of one string to another
   string str1f ( "Hello " ), str2f ( "Wide World " );
   cout << "The string str2f is: " << str2f << endl;
   str1f.append ( str2f.begin ( ) + 5 , str2f.end ( ) - 1 );
   cout << "The appended string str1 is: "
        << str1f << "." << endl << endl;
}
The original string str1 is: Hello
The C-string cstr1a is: Out There
Appending the C-string cstr1a to string str1 gives: Hello Out There .

The string str1b is: Hello
The C-string cstr1b is: Out There
Appending the 1st part of the C-string cstr1b to string str1 gives: Hello Out.

The string str2c is: Wide World
The appended string str1 is: Hello World.

The  string str2d is: Wide
The appended string str1d is: Hello Wide .
The doubly appended strig str1 is: Hello Wide World .

The string str1 appended with exclamations is: Hello !!!!

The string str2f is: Wide World
The appended string str1 is: Hello World.

basic_string::assign

Menetapkan nilai karakter baru ke konten string.

basic_string<CharType, Traits, Allocator>& assign(
    const value_type* ptr);

basic_string<CharType, Traits, Allocator>& assign(
    const value_type* ptr,
    size_type count);

basic_string<CharType, Traits, Allocator>& assign(
    const basic_string<CharType, Traits, Allocator>& str,
    size_type off,
    size_type count);

basic_string<CharType, Traits, Allocator>& assign(
    const basic_string<CharType, Traits, Allocator>& str);

basic_string<CharType, Traits, Allocator>& assign(
    size_type count,
    value_type char_value);

template <class InIt>
basic_string<CharType, Traits, Allocator>& assign(
    InputIterator first,
    InputIterator last);

basic_string<CharType, Traits, Allocator>& assign(
    const_pointer first,
    const_pointer last);

basic_string<CharType, Traits, Allocator>& assign(
    const_iterator first,
    const_iterator last);

Parameter

ptr
Penunjuk ke karakter string C yang akan ditetapkan ke string target.

count
Jumlah karakter yang akan ditetapkan, dari string sumber.

str
String sumber yang karakternya akan ditetapkan ke string target.

char_value
Nilai karakter yang akan ditetapkan.

first
Iterator input, const_pointer, atau const_iterator mengatasi karakter pertama dalam rentang string sumber yang akan ditetapkan ke rentang target.

last
Iterator input, const_pointer, atau const_iterator mengatasi yang melebihi karakter terakhir dalam rentang string sumber yang akan ditetapkan ke rentang target.

off
Posisi di mana karakter baru akan mulai ditetapkan.

Nilai hasil

Referensi ke objek string yang sedang ditetapkan karakter baru oleh fungsi anggota.

Keterangan

String dapat diberi nilai karakter baru. Nilai baru dapat berupa string dan C-string atau satu karakter. operator= dapat digunakan jika nilai baru dapat dijelaskan oleh parameter tunggal; jika tidak, fungsi assignanggota , yang memiliki beberapa parameter, dapat digunakan untuk menentukan bagian string mana yang akan ditetapkan ke string target.

Contoh

// basic_string_assign.cpp
// compile with: /EHsc
#include <string>
#include <iostream>

int main( )
{
   using namespace std;

   // The first member function assigning the
   // characters of a C-string to a string
   string str1a;
   const char *cstr1a = "Out There";
   cout << "The C-string cstr1a is: " << cstr1a <<  "." << endl;
   str1a.assign ( cstr1a );
   cout << "Assigning the C-string cstr1a to string str1 gives: "
        << str1a << "." << endl << endl;

   // The second member function assigning a specific
   // number of the of characters a C-string to a string
   string  str1b;
   const char *cstr1b = "Out There";
   cout << "The C-string cstr1b is: " << cstr1b << endl;
   str1b.assign ( cstr1b , 3 );
   cout << "Assigning the 1st part of the C-string cstr1b "
        << "to string str1 gives: " << str1b << "."
        << endl << endl;

   // The third member function assigning a specific number
   // of the characters from one string to another string
   string str1c ( "Hello " ), str2c ( "Wide World " );
   cout << "The string str2c is: " << str2c << endl;
   str1c.assign ( str2c , 5 , 5 );
   cout << "The newly assigned string str1 is: "
        << str1c << "." << endl << endl;

   // The fourth member function assigning the characters
   // from one string to another string in two equivalent
   // ways, comparing the assign and operator =
   string str1d ( "Hello" ), str2d ( "Wide" ), str3d ( "World" );
   cout << "The original string str1 is: " << str1d << "." << endl;
   cout << "The string str2d is: " << str2d << endl;
   str1d.assign ( str2d );
   cout << "The string str1 newly assigned with string str2d is: "
        << str1d << "." << endl;
   cout << "The string str3d is: " << str3d << "." << endl;
   str1d = str3d;
   cout << "The string str1 reassigned with string str3d is: "
        << str1d << "." << endl << endl;

   // The fifth member function assigning a specific
   // number of characters of a certain value to a string
   string str1e ( "Hello " );
   str1e.assign ( 4 , '!' );
   cout << "The string str1 assigned with eclamations is: "
        << str1e << endl << endl;

   // The sixth member function assigning the value from
   // the range of one string to another string
   string str1f ( "Hello " ), str2f ( "Wide World " );
   cout << "The string str2f is: " << str2f << endl;
   str1f.assign ( str2f.begin ( ) + 5 , str2f.end ( ) - 1 );
   cout << "The string str1 assigned a range of string str2f is: "
        << str1f << "." << endl << endl;
}
The C-string cstr1a is: Out There.
Assigning the C-string cstr1a to string str1 gives: Out There.

The C-string cstr1b is: Out There
Assigning the 1st part of the C-string cstr1b to string str1 gives: Out.

The string str2c is: Wide World
The newly assigned string str1 is: World.

The original string str1 is: Hello.
The string str2d is: Wide
The string str1 newly assigned with string str2d is: Wide.
The string str3d is: World.
The string str1 reassigned with string str3d is: World.

The string str1 assigned with eclamations is: !!!!

The string str2f is: Wide World
The string str1 assigned a range of string str2f is: World.

basic_string::at

Menyediakan referensi ke karakter dengan indeks tertentu dalam string.

const_reference at(size_type offset) const;

reference at(size_type offset);

Parameter

offset
Indeks posisi elemen yang akan dirujuk.

Nilai hasil

Referensi ke karakter string pada posisi yang ditentukan oleh indeks parameter.

Keterangan

Elemen pertama dari string memiliki indeks nol dan elemen berikut diindeks secara berturut-turut oleh bilangan bulat positif, sehingga string panjang n memiliki elemen nth yang diindeks oleh angka n - 1.

Anggota operator[] lebih cepat daripada fungsi at anggota untuk menyediakan akses baca dan tulis ke elemen string.

Anggota operator[] tidak memeriksa apakah indeks yang diteruskan sebagai parameter valid tetapi fungsi at anggota melakukannya dan demikian harus digunakan jika validitas tidak pasti. Indeks yang tidak valid, yang merupakan indeks kurang dari nol atau lebih besar dari atau sama dengan ukuran string, diteruskan ke fungsi at anggota melempar out_of_range pengecualian Kelas . Indeks yang tidak valid diteruskan ke operator[] hasil dalam perilaku yang tidak ditentukan, tetapi indeks yang sama dengan panjang string adalah indeks yang valid untuk string const dan operator mengembalikan karakter null saat melewati indeks ini.

Referensi yang dikembalikan mungkin tidak valid oleh realokasi string atau modifikasi untuk non-stringconst .

Contoh

// basic_string_at.cpp
// compile with: /EHsc
#include <string>
#include <iostream>

int main( )
{
   using namespace std;
   string str1 ( "Hello world" ), str2 ( "Goodbye world" );
   const string  cstr1 ( "Hello there" ), cstr2 ( "Goodbye now" );
   cout << "The original string str1 is: " << str1 << endl;
   cout << "The original string str2 is: " << str2 << endl;

   // Element access to the non const strings
   basic_string <char>::reference refStr1 = str1 [6];
   basic_string <char>::reference refStr2 = str2.at ( 3 );

   cout << "The character with an index of 6 in string str1 is: "
        << refStr1 << "." << endl;
   cout << "The character with an index of 3 in string str2 is: "
        << refStr2 << "." << endl;

   // Element access to the const strings
   basic_string <char>::const_reference crefStr1 = cstr1 [ cstr1.length ( ) ];
   basic_string <char>::const_reference crefStr2 = cstr2.at ( 8 );

   if ( crefStr1 == '\0' )
      cout << "The null character is returned as a valid reference."
           << endl;
   else
      cout << "The null character is not returned." << endl;
   cout << "The character with index 8 in the const string cstr2 is: "
        << crefStr2 << "." << endl;
}

basic_string::back

Mengembalikan referensi ke elemen terakhir dalam string.

const_reference back() const;

reference back();

Nilai hasil

Referensi ke elemen terakhir string, yang harus tidak kosong.

Keterangan

basic_string::basic_string

Membuat string yang kosong, diinisialisasi oleh karakter tertentu, atau merupakan salinan semua atau bagian dari objek string lain atau string gaya C (dihentikan nol).

basic_string();

explicit basic_string(
    const allocator_type& alloc_type);

basic_string(
    const basic_string& right);

basic_string(
    basic_string&& right);

basic_string(
    const basic_string& right,
    size_type right_offset,
    size_type count = npos);

basic_string(
    const basic_string& right,
    size_type right_offset,
    size_type count,
    const allocator_type& alloc_type);

basic_string(
    const value_type* ptr,
    size_type count);

basic_string(
    const value_type* ptr,
    size_type count,
    const allocator_type& alloc_type);

basic_string(
    const value_type* ptr);

basic_string(
    const value_type* ptr,
    const allocator_type& alloc_type);

basic_string(
    size_type count,
    value_type char_value);

basic_string(
    size_type count,
    value_type char_value,
    const allocator_type& alloc_type);

template <class InputIterator>
basic_string(
    InputIterator first,
    InputIterator last);

template <class InputIterator>
basic_string(
    InputIterator first,
    InputIterator last,
    const allocator_type& alloc_type);

basic_string(
    const_pointer first,
    const_pointer last);

basic_string(
    const_iterator first,
    const_iterator last);

Parameter

ptr
String C yang karakternya akan digunakan untuk menginisialisasi yang string sedang dibangun. Nilai ini tidak boleh berupa pointer null kecuali count nol.

alloc_type
Kelas alokator penyimpanan untuk objek string yang sedang dibangun.

count
Jumlah karakter yang akan diinisialisasi.

right
String untuk menginisialisasi string yang sedang dibangun.

right_offset
Indeks karakter dalam string yang pertama digunakan untuk menginisialisasi nilai karakter untuk string yang sedang dibangun.

char_value
Nilai karakter yang akan disalin ke dalam string yang sedang dibangun.

first
Iterator input, const_pointer, atau const_iterator mengatasi elemen pertama dalam rentang sumber yang akan disisipkan.

last
Iterator input, const_pointer, atau const_iterator mengatasi posisi yang melampaui elemen terakhir dalam rentang sumber yang akan dimasukkan.

Nilai hasil

Referensi ke objek string yang sedang dibangun oleh konstruktor.

Keterangan

Semua konstruktor menyimpan basic_string::allocator_type dan menginisialisasi urutan yang dikontrol. Objek alokator adalah argumen al, jika ada. Untuk konstruktor salinan, ini adalah right.get_allocator(), panggilan ke basic_string::get_allocator. Jika tidak, alokatornya adalah Alloc().

Urutan terkontrol diinisialisasi ke salinan urutan operand yang ditentukan oleh operand yang tersisa. Konstruktor tanpa urutan operand menentukan urutan awal yang dikontrol kosong. Jika InputIterator adalah jenis bilangan bulat dalam konstruktor templat, urutan operand berperilaku first, last sama seperti (size_type) first, (value_type) last.

Contoh

// basic_string_ctor.cpp
// compile with: /EHsc
#include <string>
#include <iostream>

int main( )
{
   using namespace std;

   // The first member function initializing with a C-string
   const char *cstr1a = "Hello Out There.";
   basic_string <char> str1a ( cstr1a , 5);
   cout << "The string initialized by C-string cstr1a is: "
        << str1a << "." << endl;

   // The second member function initializing with a string
   string  str2a ( "How Do You Do" );
   basic_string <char> str2b ( str2a , 7 , 7 );
   cout << "The string initialized by part of the string cstr2a is: "
        << str2b << "." << endl;

   // The third member function initializing a string
   // with a number of characters of a specific value
   basic_string <char> str3a ( 5, '9' );
   cout << "The string initialized by five number 9s is: "
        << str3a << endl;

   // The fourth member function creates an empty string
   // and string with a specified allocator
   basic_string <char> str4a;
   string str4b;
   basic_string <char> str4c ( str4b.get_allocator( ) );
   if (str4c.empty ( ) )
      cout << "The string str4c is empty." << endl;
   else
      cout << "The string str4c is not empty." << endl;

   // The fifth member function initializes a string from
   // another range of characters
   string str5a ( "Hello World" );
   basic_string <char> str5b ( str5a.begin ( ) + 5 , str5a.end ( ) );
   cout << "The string initialized by another range is: "
        << str5b << "." << endl;
}

basic_string::begin

Mengembalikan iterator yang menangani elemen pertama dalam string.

const_iterator begin() const;

iterator begin();

Nilai hasil

Iterator akses acak yang membahas elemen pertama dari urutan atau tepat di luar akhir urutan kosong.

Contoh

// basic_string_begin.cpp
// compile with: /EHsc
#include <string>
#include <iostream>

int main( ) {
   using namespace std;
   string str1 ( "No way out." ), str2;
   basic_string <char>::iterator strp_Iter, str1_Iter, str2_Iter;
   basic_string <char>::const_iterator str1_cIter;

   str1_Iter = str1.begin ( );
   cout << "The first character of the string str1 is: "
        << *str1_Iter << endl;
   cout << "The full original string str1 is: " << str1 << endl;

   // The dereferenced iterator can be used to modify a character
*str1_Iter = 'G';
   cout << "The first character of the modified str1 is now: "
        << *str1_Iter << endl;
   cout << "The full modified string str1 is now: " << str1 << endl;

   // The following line would be an error because iterator is const
   // *str1_cIter = 'g';

   // For an empty string, begin is equivalent to end
   if (  str2.begin ( ) == str2.end ( ) )
      cout << "The string str2 is empty." << endl;
   else
      cout << "The string str2 is not empty." << endl;
}

basic_string::c_str

Mengonversi konten string sebagai string bergaya C dan dihentikan null.

const value_type *c_str() const;

Nilai hasil

Penunjuk ke versi gaya C dari string pemanggilan. Nilai pointer tidak valid setelah memanggil non-fungsiconst , termasuk destruktor, di basic_string kelas pada objek.

Keterangan

Objek jenis string milik templat basic_string<char> kelas belum tentu dihentikan. Karakter '\0' null digunakan sebagai karakter khusus dalam string C untuk menandai akhir string tetapi tidak memiliki arti khusus dalam objek jenis string dan mungkin menjadi bagian dari string sama seperti karakter lainnya. Ada konversi otomatis dari const char * menjadi string, tetapi kelas string tidak menyediakan konversi otomatis dari string gaya C ke objek jenis basic_string<char>.

String gaya C yang dikembalikan tidak boleh dimodifikasi, yang dapat membatalkan penunjuk ke string, atau dihapus, karena string memiliki masa pakai terbatas dan dimiliki oleh string kelas.

Contoh

// basic_string_c_str.cpp
// compile with: /EHsc
#include <string>
#include <iostream>

int main( )
{
   using namespace std;

   string  str1 ( "Hello world" );
   cout << "The original string object str1 is: "
        << str1 << endl;
   cout << "The length of the string object str1 = "
        << str1.length ( ) << endl << endl;

   // Converting a string to an array of characters
   const char *ptr1 = 0;
   ptr1= str1.data ( );
   cout << "The modified string object ptr1 is: " << ptr1
        << endl;
   cout << "The length of character array str1 = "
        << strlen ( ptr1) << endl << endl;

   // Converting a string to a C-style string
   const char *c_str1 = str1.c_str ( );
   cout << "The C-style string c_str1 is: " << c_str1
        << endl;
   cout << "The length of C-style string str1 = "
        << strlen ( c_str1) << endl << endl;
}
The original string object str1 is: Hello world
The length of the string object str1 = 11

The modified string object ptr1 is: Hello world
The length of character array str1 = 11

The C-style string c_str1 is: Hello world
The length of C-style string str1 = 11

basic_string::capacity

Mengembalikan jumlah elemen terbesar yang dapat disimpan dalam string tanpa meningkatkan alokasi memori string.

size_type capacity() const;

Nilai hasil

Ukuran penyimpanan yang saat ini dialokasikan dalam memori untuk menahan string.

Keterangan

Fungsi anggota mengembalikan penyimpanan yang saat ini dialokasikan untuk menahan urutan terkontrol, nilai setidaknya sebesar size.

Contoh

// basic_string_capacity.cpp
// compile with: /EHsc
#include <string>
#include <iostream>

int main( )
{
   using namespace std;
   string  str1 ("Hello world");
   cout << "The original string str1 is: " << str1 << endl;

   // The size and length member functions differ in name only
   basic_string <char>::size_type sizeStr1, lenStr1;
   sizeStr1 = str1.size ( );
   lenStr1 = str1.length ( );

   basic_string <char>::size_type capStr1, max_sizeStr1;
   capStr1 = str1.capacity ( );
   max_sizeStr1 = str1.max_size ( );

   // Compare size, length, capacity & max_size of a string
   cout << "The current size of original string str1 is: "
        << sizeStr1 << "." << endl;
   cout << "The current length of original string str1 is: "
        << lenStr1 << "." << endl;
   cout << "The capacity of original string str1 is: "
        << capStr1 << "." << endl;
   cout << "The max_size of original string str1 is: "
        << max_sizeStr1 << "." << endl << endl;

   str1.erase ( 6, 5 );
   cout << "The modified string str1 is: " << str1 << endl;

   sizeStr1 = str1.size (  );
   lenStr1 = str1.length (  );
   capStr1 = str1.capacity (  );
   max_sizeStr1 = str1.max_size (  );

   // Compare size, length, capacity & max_size of a string
   // after erasing part of the original string
   cout << "The current size of modified string str1 is: "
        << sizeStr1 << "." << endl;
   cout << "The current length of modified string str1 is: "
        << lenStr1 << "." << endl;
   cout << "The capacity of modified string str1 is: "
        << capStr1 << "." << endl;
   cout << "The max_size of modified string str1 is: "
        << max_sizeStr1 << "." << endl;
}

basic_string::cbegin

Mengembalikan iterator const yang membahas elemen pertama dalam rentang.

const_iterator cbegin() const;

Nilai hasil

Iterator const akses acak yang menunjuk pada elemen pertama rentang, atau lokasi tepat di luar akhir rentang kosong (untuk rentang kosong, cbegin() == cend()).

Keterangan

Dengan nilai cbeginpengembalian , elemen dalam rentang tidak dapat dimodifikasi.

Anda dapat menggunakan fungsi anggota ini sebagai pengganti begin() fungsi anggota untuk menjamin bahwa nilai yang dikembalikan adalah const_iterator. Biasanya, ini digunakan bersama dengan kata kunci pengurangan auto jenis, seperti yang ditunjukkan dalam contoh berikut. Dalam contoh, pertimbangkan Container untuk menjadi kontainer yang dapat dimodifikasi (non-const) dari segala jenis yang mendukung begin() dan cbegin().

auto i1 = Container.begin();
// i1 is Container<T>::iterator
auto i2 = Container.cbegin();

// i2 is Container<T>::const_iterator

basic_string::cend

Mengembalikan iterator const yang membahas lokasi tepat di luar elemen terakhir dalam rentang.

const_iterator cend() const;

Nilai hasil

Iterator const akses acak yang menunjuk tepat di luar akhir rentang.

Keterangan

cend digunakan untuk menguji apakah iterator telah melewati akhir rentangnya.

Anda dapat menggunakan fungsi anggota ini sebagai pengganti end() fungsi anggota untuk menjamin bahwa nilai yang dikembalikan adalah const_iterator. Biasanya, ini digunakan bersama dengan kata kunci pengurangan auto jenis, seperti yang ditunjukkan dalam contoh berikut. Dalam contoh, pertimbangkan Container untuk menjadi kontainer yang dapat dimodifikasi (non-const) dari segala jenis yang mendukung end() dan cend().

auto i1 = Container.end();
// i1 is Container<T>::iterator
auto i2 = Container.cend();

// i2 is Container<T>::const_iterator

Nilai yang dikembalikan oleh cend tidak boleh didereferensikan.

basic_string::clear

Menghapus semua elemen string.

void clear();

Keterangan

String tempat fungsi anggota dipanggil akan kosong.

Contoh

// basic_string_clear.cpp
// compile with: /EHsc
#include <string>
#include <iostream>

int main( )
{
   using namespace std;
   string  str1 ("Hello world"), str2;
   basic_string <char>::iterator str_Iter;
   cout << "The original string str1 is: ";
   for ( str_Iter = str1.begin( ); str_Iter != str1.end( ); str_Iter++ )
      cout << *str_Iter;
   cout << endl;

   str1.clear ( );
   cout << "The modified string str1 is: ";
   for ( str_Iter = str1.begin( ); str_Iter != str1.end( ); str_Iter++ )
      cout << *str_Iter;
   cout << endl;

   //For an empty string, begin is equivalent to end
   if ( str1.begin ( ) == str1.end ( ) )
      cout << "Nothing printed above because "
           << "the string str1 is empty." << endl;
   else
      cout << "The string str1 is not empty." << endl;
}
The original string str1 is: Hello world
The modified string str1 is:
Nothing printed above because the string str1 is empty.

basic_string::compare

Apakah perbandingan peka huruf besar/kecil dengan string tertentu untuk menentukan apakah kedua string sama atau jika satu secara leksikografis kurang dari yang lain.

int compare(
    const basic_string<CharType, Traits, Allocator>& str) const;

int compare(
    size_type position_1,
    size_type number_1,
    const basic_string<CharType, Traits, Allocator>& str) const;

int compare(
    size_type position_1,
    size_type number_1,
    const basic_string<CharType, Traits, Allocator>& str,
    size_type offset,
    size_type count) const;

int compare(
    const value_type* ptr) const;

int compare(
    size_type position_1,
    size_type number_1,
    const value_type* ptr) const;

int compare(
    size_type position_1,
    size_type number_1,
    const value_type* ptr
    size_type number_2) const;

Parameter

str
String yang akan dibandingkan dengan string operand.

position_1
Indeks string operand di mana perbandingan dimulai.

number_1
Jumlah maksimum karakter dari string operand yang akan dibandingkan.

number_2
Jumlah maksimum karakter dari string parameter yang akan dibandingkan.

offset
Indeks string parameter di mana perbandingan dimulai.

count
Jumlah maksimum karakter dari string parameter yang akan dibandingkan.

ptr
String C yang akan dibandingkan dengan string operand.

Nilai hasil

Nilai negatif jika string operand kurang dari string parameter; nol jika dua string sama; atau nilai positif jika string operand lebih besar dari string parameter.

Keterangan

Fungsi compare anggota membandingkan semua, atau sebagian, dari parameter dan string operand tergantung pada yang digunakan.

Perbandingan peka huruf besar/kecil.

Contoh

// basic_string_compare.cpp
// compile with: /EHsc
#include <string>
#include <iostream>

int main( )
{
   using namespace std;

   // The first member function compares
   // an operand string to a parameter string
   int comp1;
   string s1o ( "CAB" );
   string s1p ( "CAB" );
   cout << "The operand string is: " << s1o << endl;
   cout << "The parameter string is: " << s1p << endl;
   comp1 = s1o.compare ( s1p );
   if ( comp1 < 0 )
      cout << "The operand string is less than "
           << "the parameter string." << endl;
   else if ( comp1 == 0 )
      cout << "The operand string is equal to "
           << "the parameter string." << endl;
   else
      cout << "The operand string is greater than "
           << "the parameter string." << endl;
   cout << endl;

   // The second member function compares part of
   // an operand string to a parameter string
   int comp2a, comp2b;
   string s2o ( "AACAB" );
   string s2p ( "CAB" );
   cout << "The operand string is: " << s2o << endl;
   cout << "The parameter string is: " << s2p << endl;
   comp2a = s2o.compare (  2 , 3 , s2p );
   if ( comp2a < 0 )
      cout << "The last three characters of "
           << "the operand string\n are less than "
           << "the parameter string." << endl;
   else if ( comp2a == 0 )
      cout << "The last three characters of "
           << "the operand string\n are equal to "
           << "the parameter string." << endl;
   else
      cout << "The last three characters of "
           << "the operand string\n is greater than "
           << "the parameter string." << endl;

   comp2b = s2o.compare (  0 , 3 , s2p );
   if ( comp2b < 0 )
      cout << "The first three characters of "
           << "the operand string\n are less than "
           << "the parameter string." << endl;
   else if ( comp2b == 0 )
      cout << "The first three characters of "
           << "the operand string\n are equal to "
           << "the parameter string." << endl;
   else
      cout << "The first three characters of "
           << "the operand string\n is greater than "
           << "the parameter string." << endl;
   cout << endl;

   // The third member function compares part of
   // an operand string to part of a parameter string
   int comp3a;
   string s3o ( "AACAB" );
   string s3p ( "DCABD" );
   cout << "The operand string is: " << s3o << endl;
   cout << "The parameter string is: " << s3p << endl;
   comp3a = s3o.compare (  2 , 3 , s3p , 1 , 3 );
   if ( comp3a < 0 )
      cout << "The three characters from position 2 of "
           << "the operand string are less than\n "
           << "the 3 characters parameter string "
           << "from position 1." << endl;
   else if ( comp3a == 0 )
      cout << "The three characters from position 2 of "
           << "the operand string are equal to\n "
           << "the 3 characters parameter string "
           << "from position 1." << endl;
   else
      cout << "The three characters from position 2 of "
           << "the operand string is greater than\n "
           << "the 3 characters parameter string "
           << "from position 1." << endl;
   cout << endl;

   // The fourth member function compares
   // an operand string to a parameter C-string
   int comp4a;
   string s4o ( "ABC" );
   const char* cs4p = "DEF";
   cout << "The operand string is: " << s4o << endl;
   cout << "The parameter C-string is: " << cs4p << endl;
   comp4a = s4o.compare ( cs4p );
   if ( comp4a < 0 )
      cout << "The operand string is less than "
           << "the parameter C-string." << endl;
   else if ( comp4a == 0 )
      cout << "The operand string is equal to "
           << "the parameter C-string." << endl;
   else
      cout << "The operand string is greater than "
           << "the parameter C-string." << endl;
   cout << endl;

   // The fifth member function compares part of
   // an operand string to a parameter C-string
   int comp5a;
   string s5o ( "AACAB" );
   const char* cs5p = "CAB";
   cout << "The operand string is: " << s5o << endl;
   cout << "The parameter string is: " << cs5p << endl;
   comp5a = s5o.compare (  2 , 3 , s2p );
   if ( comp5a < 0 )
      cout << "The last three characters of "
           << "the operand string\n are less than "
           << "the parameter C-string." << endl;
   else if ( comp5a == 0 )
      cout << "The last three characters of "
           << "the operand string\n are equal to "
           << "the parameter C-string." << endl;
   else
      cout << "The last three characters of "
           << "the operand string\n is greater than "
           << "the parameter C-string." << endl;
   cout << endl;

   // The sixth member function compares part of
   // an operand string to part of an equal length of
   // a parameter C-string
   int comp6a;
   string s6o ( "AACAB" );
   const char* cs6p = "ACAB";
   cout << "The operand string is: " << s6o << endl;
   cout << "The parameter C-string is: " << cs6p << endl;
   comp6a = s6o.compare (  1 , 3 , cs6p , 3 );
   if ( comp6a < 0 )
      cout << "The 3 characters from position 1 of "
           << "the operand string are less than\n "
           << "the first 3 characters of the parameter C-string."
           << endl;
   else if ( comp6a == 0 )
      cout << "The 3 characters from position 2 of "
           << "the operand string are equal to\n "
           << "the first 3 characters of the parameter C-string."
           <<  endl;
   else
      cout << "The 3 characters from position 2 of "
           << "the operand string is greater than\n "
           << "the first 3 characters of the parameter C-string."
           << endl;
   cout << endl;
}
The operand string is: CAB
The parameter string is: CAB
The operand string is equal to the parameter string.

The operand string is: AACAB
The parameter string is: CAB
The last three characters of the operand string
are equal to the parameter string.
The first three characters of the operand string
are less than the parameter string.

The operand string is: AACAB
The parameter string is: DCABD
The three characters from position 2 of the operand string are equal to
the 3 characters parameter string from position 1.

The operand string is: ABC
The parameter C-string is: DEF
The operand string is less than the parameter C-string.

The operand string is: AACAB
The parameter string is: CAB
The last three characters of the operand string
are equal to the parameter C-string.

The operand string is: AACAB
The parameter C-string is: ACAB
The 3 characters from position 2 of the operand string are equal to
the first 3 characters of the parameter C-string.

basic_string::const_iterator

Jenis yang menyediakan iterator akses acak yang dapat mengakses dan membaca const elemen dalam string.

typedef implementation-defined const_iterator;

Keterangan

Jenis const_iterator tidak dapat digunakan untuk memodifikasi nilai karakter dan digunakan untuk melakukan iterasi melalui string ke arah depan.

Contoh

Lihat contoh untuk begin contoh cara mendeklarasikan dan menggunakan const_iterator.

basic_string::const_pointer

Jenis yang menyediakan penunjuk ke const elemen dalam string.

typedef typename allocator_type::const_pointer const_pointer;

Keterangan

Jenisnya adalah sinonim untuk allocator_type::const_pointer.

Untuk jenis string, setara dengan char*.

Pointer yang dinyatakan const harus diinisialisasi saat dinyatakan. Const pointer selalu menunjuk ke lokasi memori yang sama dan dapat menunjuk ke data konstanta atau non-konstanta.

Contoh

// basic_string_const_ptr.cpp
// compile with: /EHsc
#include <string>
#include <iostream>

int main( )
{
   using namespace std;
   basic_string<char>::const_pointer pstr1a = "In Here";
   const char *cstr1c = "Out There";

   cout << "The string pstr1a is: " << pstr1a <<  "." << endl;
   cout << "The C-string cstr1c is: " << cstr1c << "." << endl;
}
The string pstr1a is: In Here.
The C-string cstr1c is: Out There.

basic_string::const_reference

Jenis yang menyediakan referensi ke elemen yang const disimpan dalam string untuk membaca dan melakukan const operasi.

typedef typename allocator_type::const_reference const_reference;

Keterangan

Jenis const_reference tidak dapat digunakan untuk mengubah nilai elemen.

Jenisnya adalah sinonim untuk allocator_type::const_reference. Untuk jenis string, setara dengan const char&.

Contoh

Lihat contoh untuk at contoh cara mendeklarasikan dan menggunakan const_reference.

basic_string::const_reverse_iterator

Jenis yang menyediakan iterator akses acak yang dapat membaca elemen apa pun const dalam string.

typedef std::reverse_iterator<const_iterator> const_reverse_iterator;

Keterangan

Jenis const_reverse_iterator tidak dapat mengubah nilai karakter dan digunakan untuk melakukan iterasi melalui string secara terbalik.

Contoh

Lihat contoh untuk rbegin contoh cara mendeklarasikan dan menggunakan const_reverse_iterator.

basic_string::copy

Menyalin paling banyak jumlah karakter tertentu dari posisi terindeks dalam string sumber ke array karakter target.

Metode ini berpotensi tidak aman, karena bergantung pada pemanggil untuk memeriksa apakah nilai yang diteruskan sudah benar. Pertimbangkan untuk menggunakan basic_string::_Copy_s sebagai gantinya.

size_type copy(
    value_type* ptr,
    size_type count,
    size_type offset = 0) const;

Parameter

ptr
Array karakter target tempat elemen akan disalin.

count Jumlah karakter yang akan disalin, paling banyak, dari string sumber.

offset
Posisi awal dalam string sumber tempat salinan akan dibuat.

Nilai hasil

Jumlah karakter yang disalin.

Keterangan

Karakter null tidak ditambahkan ke akhir salinan.

Contoh

// basic_string_copy.cpp
// compile with: /EHsc /W3
#include <string>
#include <iostream>

int main( )
{
   using namespace std;
   string str1 ( "Hello World" );
   basic_string <char>::iterator str_Iter;
   char array1 [ 20 ] = { 0 };
   char array2 [ 10 ] = { 0 };
   basic_string <char>:: pointer array1Ptr = array1;
   basic_string <char>:: value_type *array2Ptr = array2;

   cout << "The original string str1 is: ";
   for ( str_Iter = str1.begin( ); str_Iter != str1.end( ); str_Iter++ )
      cout << *str_Iter;
   cout << endl;

   basic_string <char>:: size_type nArray1;
   // Note: string::copy is potentially unsafe, consider
   // using string::_Copy_s instead.
   nArray1 = str1.copy ( array1Ptr , 12 );  // C4996
   cout << "The number of copied characters in array1 is: "
        << nArray1 << endl;
   cout << "The copied characters array1 is: " << array1 << endl;

   basic_string <char>:: size_type nArray2;
   // Note: string::copy is potentially unsafe, consider
   // using string::_Copy_s instead.
   nArray2 = str1.copy ( array2Ptr , 5 , 6  );  // C4996
   cout << "The number of copied characters in array2 is: "
           << nArray2 << endl;
   cout << "The copied characters array2 is: " << array2Ptr << endl;
}
The original string str1 is: Hello World
The number of copied characters in array1 is: 11
The copied characters array1 is: Hello World
The number of copied characters in array2 is: 5
The copied characters array2 is: World

basic_string::crbegin

Mengembalikan iterator const yang membahas elemen pertama dalam string terbalik.

const_reverse_iterator crbegin() const;

Nilai hasil

Iterator terbalik yang menunjuk tepat di luar akhir string. Posisi menunjuk awal string terbalik.

basic_string::crend

Mengembalikan iterator const yang membahas lokasi yang menggantikan elemen terakhir dalam string terbalik.

const_reverse_iterator crend() const;

Nilai hasil

Iterator const terbalik yang membahas lokasi yang menggantikan elemen terakhir dalam string terbalik (lokasi yang telah mendahului elemen pertama dalam string yang tidak terbalik).

Keterangan

basic_string::_Copy_s

Menyalin paling banyak jumlah karakter tertentu dari posisi terindeks dalam string sumber ke array karakter target.

size_type _Copy_s(
    value_type* dest,
    size_type dest_size,
    size_type count,
    size_type offset = 0) const;

Parameter

dest
Array karakter target tempat elemen akan disalin.

dest_size
Ukuran dest.

count Jumlah karakter yang akan disalin, paling banyak, dari string sumber.

offset
Posisi awal dalam string sumber tempat salinan akan dibuat.

Nilai hasil

Jumlah karakter yang disalin.

Keterangan

Karakter null tidak ditambahkan ke akhir salinan. Fungsi ini khusus Microsoft.

Contoh

// basic_string__Copy_s.cpp
// compile with: /EHsc
#include <string>
#include <iostream>

int main( )
{
    using namespace std;
    string str1("Hello World");
    basic_string<char>::iterator str_Iter;
    const int array1_size = 20;
    char array1[array1_size] = { 0 };
    const int array2_size = 10;
    char array2[array2_size] = { 0 };
    basic_string<char>:: pointer array1Ptr = array1;
    basic_string<char>:: value_type *array2Ptr = array2;

    cout << "The original string str1 is: ";
    for (str_Iter = str1.begin(); str_Iter != str1.end(); str_Iter++)
        cout << *str_Iter;
    cout << endl;

    basic_string<char>::size_type nArray1;
    nArray1 = str1._Copy_s(array1Ptr, array1_size, 12);
    cout << "The number of copied characters in array1 is: "
         << nArray1 << endl;
    cout << "The copied characters array1 is: " << array1 << endl;

    basic_string<char>:: size_type nArray2;
    nArray2 = str1._Copy_s(array2Ptr, array2_size, 5, 6);
    cout << "The number of copied characters in array2 is: "
         << nArray2 << endl;
    cout << "The copied characters array2 is: " << array2Ptr << endl;
}
The original string str1 is: Hello World
The number of copied characters in array1 is: 11
The copied characters array1 is: Hello World
The number of copied characters in array2 is: 5
The copied characters array2 is: World

basic_string::data

Mengonversi konten string menjadi array karakter yang dihentikan null.

const value_type *data() const noexcept;
value_type *data() noexcept;

Nilai hasil

Penunjuk ke elemen pertama dari array null-terminated yang berisi konten string. Untuk string kosong, penunjuk menunjuk ke satu karakter null sama dengan value_type().

Keterangan

Penunjuk dikembalikan oleh data titik pada rentang [data(), data() + size()]yang valid . Setiap elemen dalam rentang sesuai dengan data saat ini dalam string. Artinya, untuk setiap offset n yang valid dalam rentang, data() + n == addressof(operator[](n)).

Jika Anda mengubah konten string yang dikembalikan oleh const kelebihan beban data, perilaku tidak terdefinisi. Anda juga mendapatkan perilaku yang tidak ditentukan jika karakter null terminal diubah ke nilai lain. Penunjuk yang dikembalikan mungkin tidak valid jika referensi non-keconst string diteruskan ke fungsi pustaka standar. Ini juga dapat dibatalkan oleh panggilan ke fungsi non-anggotaconst . Panggilan ke anggota at, , back, beginend, front, rbegin, rend, dan operator[] tidak membatalkan penunjuk.

Sebelum C++11, data tidak menjamin string yang dikembalikan dihentikan null. Karena C++11, data dan c_str keduanya mengembalikan string yang dihentikan null, dan secara efektif sama.

Non-kelebihanconst beban baru di C++17. Untuk menggunakannya, tentukan opsi pengkompilasi atau yang /std:c++17 lebih baru.

Contoh

// basic_string_data.cpp
// compile with: /EHsc
#include <string>
#include <iostream>

int main( )
{
   using namespace std;

   string str1 ( "Hello world" );
   cout << "The original string object str1 is: "
        << str1 << endl;
   cout << "The length of the string object str1 = "
        << str1.length ( ) << endl << endl;

   // Converting a string to an array of characters
   const char *ptr1 = 0;
   ptr1= str1.data ( );
   cout << "The modified string object ptr1 is: " << ptr1
        << endl;
   cout << "The length of character array str1 = "
        << strlen ( ptr1) << endl << endl;

   // Converting a string to a C-style string
   const char *c_str1 = str1.c_str ( );
   cout << "The C-style string c_str1 is: " << c_str1
        << endl;
   cout << "The length of C-style string str1 = "
        << strlen ( c_str1) << endl << endl;
}
The original string object str1 is: Hello world
The length of the string object str1 = 11

The modified string object ptr1 is: Hello world
The length of character array str1 = 11

The C-style string c_str1 is: Hello world
The length of C-style string str1 = 11

basic_string::difference_type

Jenis yang menyediakan perbedaan antara dua iterator yang merujuk ke elemen dalam string yang sama.

typedef typename allocator_type::difference_type difference_type;

Keterangan

Jenis bilangan bulat yang ditandatangani menjelaskan objek yang dapat mewakili perbedaan antara alamat dua elemen dalam urutan terkontrol.

Untuk jenis string, setara dengan ptrdiff_t.

Contoh

// basic_string_diff_type.cpp
// compile with: /EHsc
#include <string>
#include <iostream>

int main( )
{
   using namespace std;
   string str1 ( "quintillion" );
   cout << "The original string str1 is: " << str1 << endl;
   basic_string <char>::size_type indexChFi, indexChLi;

   indexChFi = str1.find_first_of ( "i" );
   indexChLi = str1.find_last_of ( "i" );
   basic_string<char>::difference_type diffi = indexChLi - indexChFi;

   cout << "The first character i is at position: "
        << indexChFi << "." << endl;
   cout << "The last character i is at position: "
        << indexChLi << "." << endl;
   cout << "The difference is: " << diffi << "." << endl;
}
The original string str1 is: quintillion
The first character i is at position: 2.
The last character i is at position: 8.
The difference is: 6.

basic_string::empty

Menguji apakah string berisi karakter atau tidak.

bool empty() const;

Nilai hasil

true jika objek string tidak berisi karakter; false jika memiliki setidaknya satu karakter.

Keterangan

Fungsi anggota setara dengan size == 0.

Contoh

// basic_string_empty.cpp
// compile with: /EHsc
#include <string>
#include <iostream>

int main() {
   using namespace std;

   bool b1, b2;

   string str1 ("Hello world");
   cout << "The original string object str1 is: " << str1 << endl;
   b1 = str1.empty();
   if (b1)
      cout << "The string object str1 is empty." << endl;
   else
      cout << "The string object str1 is not empty." << endl;
   cout << endl;

   // An example of an empty string object
   string str2;
   b2 = str2.empty();
   if (b2)
      cout << "The string object str2 is empty." << endl;
   else
      cout << "The string object str2 is not empty." << endl;
}

basic_string::end

Mengembalikan iterator yang membahas lokasi yang menggantikan elemen terakhir dalam string.

const_iterator end() const;

iterator end();

Nilai hasil

Mengembalikan iterator akses acak yang membahas lokasi yang menggantikan elemen terakhir dalam string.

Keterangan

end sering digunakan untuk menguji apakah iterator telah mencapai akhir string-nya. Nilai yang dikembalikan oleh end tidak boleh didereferensikan.

Jika nilai end pengembalian ditetapkan ke const_iterator, objek string tidak dapat dimodifikasi. Jika nilai end pengembalian ditetapkan ke iterator, objek string dapat dimodifikasi.

Contoh

// basic_string_end.cpp
// compile with: /EHsc
#include <string>
#include <iostream>

int main( )
{
   using namespace std;
   string str1 ( "No way out." ), str2;
   basic_string <char>::iterator str_Iter, str1_Iter, str2_Iter;
   basic_string <char>::const_iterator str1_cIter;

   str1_Iter = str1.end ( );
   str1_Iter--;
   str1_Iter--;
   cout << "The last character-letter of the string str1 is: " << *str1_Iter << endl;
   cout << "The full original string str1 is: " << str1 << endl;

   // end used to test when an iterator has reached the end of its string
   cout << "The string is now: ";
   for ( str_Iter = str1.begin( ); str_Iter != str1.end( ); str_Iter++ )
      cout << *str_Iter;
   cout << endl;

   // The dereferenced iterator can be used to modify a character
   *str1_Iter = 'T';
   cout << "The last character-letter of the modified str1 is now: "
        << *str1_Iter << endl;
   cout << "The modified string str1 is now: " << str1 << endl;

   // The following line would be an error because iterator is const
   // *str1_cIter = 'T';

   // For an empty string, end is equivalent to begin
   if ( str2.begin( ) == str2.end ( ) )
      cout << "The string str2 is empty." << endl;
   else
      cout << "The stringstr2  is not empty." << endl;
}
The last character-letter of the string str1 is: t
The full original string str1 is: No way out.
The string is now: No way out.
The last character-letter of the modified str1 is now: T
The modified string str1 is now: No way ouT.
The string str2 is empty.

basic_string::ends_with

Periksa apakah string diakhiri dengan akhiran yang ditentukan.

bool ends_with(const CharType c) const noexcept;
bool ends_with(const CharType* const x) const noexcept;
bool ends_with(const basic_string_view sv) const noexcept;

Parameter

c
Akhiran karakter tunggal yang akan dicari.

sv
Tampilan string yang berisi akhiran yang akan dicari.
Anda dapat meneruskan std::basic_string, yang mengonversi ke tampilan string.

x
String karakter null-terminated yang berisi akhiran untuk dicari.

Nilai hasil

true jika string diakhiri dengan akhiran yang ditentukan; false Sebaliknya.

Keterangan

ends_with() baru di C++20. Untuk menggunakannya, tentukan opsi pengkompilasi atau yang /std:c++20 lebih baru.

Lihat starts_with untuk memeriksa apakah string dimulai dengan awalan yang ditentukan.

Contoh

// Requires /std:c++20 or /std:c++latest
#include <string>
#include <iostream>

int main()
{
    std::basic_string<char> str = "abcdefg";

    std::cout << std::boolalpha; // so booleans show as 'true'/'false'
    std::cout << str.ends_with('g') << '\n';
    std::cout << str.ends_with("eFg") << '\n';

    std::basic_string<char> str2 = "efg";
    std::cout << str.ends_with(str2);

    return 0;
}
true
false
true

basic_string::erase

Menghapus elemen atau rentang elemen dalam string dari posisi tertentu.

iterator erase(
    iterator first,
    iterator last);

iterator erase(
    iterator iter);

basic_string<CharType, Traits, Allocator>& erase(
    size_type offset = 0,
    size_type count = npos);

Parameter

first
Iterator yang membahas posisi elemen pertama dalam rentang yang akan dihapus.

last
Iterator yang membahas posisi satu melewati elemen terakhir dalam rentang yang akan dihapus.

iter
Iterator yang membahas posisi elemen dalam string yang akan dihapus.

offset
Indeks karakter pertama dalam string yang akan dihapus.

count
Jumlah elemen yang akan dihapus jika ada sebanyak mungkin dalam rentang string yang dimulai dengan offset.

Nilai hasil

Untuk dua fungsi anggota pertama, iterator yang membahas karakter pertama setelah karakter terakhir dihapus oleh fungsi anggota. Untuk fungsi anggota ketiga, referensi ke objek string tempat elemen telah dihapus.

Keterangan

Fungsi anggota ketiga mengembalikan *this.

Contoh

// basic_string_erase.cpp
// compile with: /EHsc
#include <string>
#include <iostream>

int main( )
{
   using namespace std;

   // The 1st member function using a range demarcated
   // by iterators
   string str1 ( "Hello world" );
   basic_string <char>::iterator str1_Iter;
   cout << "The original string object str1 is: "
        << str1 << "." << endl;
   str1_Iter = str1.erase ( str1.begin ( ) + 3 , str1.end ( ) - 1 );
   cout << "The first element after those removed is: "
        << *str1_Iter << "." << endl;
   cout << "The modified string object str1 is: " << str1
           << "." << endl << endl;

   // The 2nd member function erasing a char pointed to
   // by an iterator
   string str2 ( "Hello World" );
   basic_string <char>::iterator str2_Iter;
   cout << "The original string object str2 is: " << str2
        << "." << endl;
   str2_Iter = str2.erase ( str2.begin ( ) + 5 );
   cout << "The first element after those removed is: "
        << *str2_Iter << "." << endl;
   cout << "The modified string object str2 is: " << str2
        << "." << endl << endl;

   // The 3rd member function erasing a number of chars
   // after a char
   string str3 ( "Hello computer" ), str3m;
   basic_string <char>::iterator str3_Iter;
   cout << "The original string object str3 is: "
        << str3 << "." << endl;
   str3m = str3.erase ( 6 , 8 );
   cout << "The modified string object str3m is: "
        << str3m << "." << endl;
}
The original string object str1 is: Hello world.
The first element after those removed is: d.
The modified string object str1 is: Held.

The original string object str2 is: Hello World.
The first element after those removed is: W.
The modified string object str2 is: HelloWorld.

The original string object str3 is: Hello computer.
The modified string object str3m is: Hello .

basic_string::find

Mencari string dalam arah maju untuk kemunculan pertama substring yang cocok dengan urutan karakter tertentu.

size_type find(
    value_type char_value,
    size_type offset = 0) const;

size_type find(
    const value_type* ptr,
    size_type offset = 0) const;

size_type find(
    const value_type* ptr,
    size_type offset,
    size_type count) const;

size_type find(
    const basic_string<CharType, Traits, Allocator>& str,
    size_type offset = 0) const;

Parameter

char_value
Nilai karakter yang fungsi anggotanya akan dicari.

offset
Indeks posisi di mana pencarian akan dimulai.

ptr
String C yang fungsi anggotanya akan dicari.

count
Jumlah karakter, menghitung maju dari karakter pertama, dalam string C yang fungsi anggotanya akan dicari.

str
String yang fungsi anggotanya akan dicari.

Nilai hasil

Indeks karakter pertama substring yang dicari ketika berhasil; jika tidak npos.

Contoh

// basic_string_find.cpp
// compile with: /EHsc
#include <string>
#include <iostream>

int main( )
{
   using namespace std;

   // The first member function
   // searches for a single character in a string
   string str1 ( "Hello Everyone" );
   cout << "The original string str1 is: " << str1 << endl;
   basic_string <char>::size_type indexCh1a, indexCh1b;

   indexCh1a = str1.find ( "e" , 3 );
   if (indexCh1a != string::npos )
      cout << "The index of the 1st 'e' found after the 3rd"
           << " position in str1 is: " << indexCh1a << endl;
   else
      cout << "The character 'e' was not found in str1 ." << endl;

   indexCh1b = str1.find ( "x" );
   if (indexCh1b != string::npos )
      cout << "The index of the 'x' found in str1 is: "
           << indexCh1b << endl << endl;
   else
      cout << "The Character 'x' was not found in str1."
           << endl << endl;

   // The second member function searches a string
   // for a substring as specified by a C-string
   string str2 ( "Let me make this perfectly clear." );
   cout << "The original string str2 is: " << str2 << endl;
   basic_string <char>::size_type indexCh2a, indexCh2b;

   const char *cstr2 = "perfect";
   indexCh2a = str2.find ( cstr2 , 5 );
   if ( indexCh2a != string::npos )
      cout << "The index of the 1st element of 'perfect' "
           << "after\n the 5th position in str2 is: "
           << indexCh2a << endl;
   else
      cout << "The substring 'perfect' was not found in str2 ."
           << endl;

   const char *cstr2b = "imperfectly";
   indexCh2b = str2.find ( cstr2b , 0 );
   if (indexCh2b != string::npos )
      cout << "The index of the 1st element of 'imperfect' "
           << "after\n the 5th position in str3 is: "
           << indexCh2b << endl;
   else
      cout << "The substring 'imperfect' was not found in str2 ."
           << endl << endl;

   // The third member function searches a string
   // for a substring as specified by a C-string
   string str3 ( "This is a sample string for this program" );
   cout << "The original string str3 is: " << str3 << endl;
   basic_string <char>::size_type indexCh3a, indexCh3b;

   const char *cstr3a = "sample";
   indexCh3a = str3.find ( cstr3a );
   if ( indexCh3a != string::npos )
      cout << "The index of the 1st element of sample "
           << "in str3 is: " << indexCh3a << endl;
   else
      cout << "The substring 'sample' was not found in str3 ."
           << endl;

   const char *cstr3b = "for";
   indexCh3b = str3.find ( cstr3b , indexCh3a + 1 , 2 );
   if (indexCh3b != string::npos )
      cout << "The index of the next occurrence of 'for' is in "
           << "str3 begins at: " << indexCh3b << endl << endl;
   else
      cout << "There is no next occurrence of 'for' in str3 ."
           << endl << endl;

   // The fourth member function searches a string
   // for a substring as specified by a string
   string str4 ( "clearly this perfectly unclear." );
   cout << "The original string str4 is: " << str4 << endl;
   basic_string <char>::size_type indexCh4a, indexCh4b;

   string str4a ( "clear" );
   indexCh4a = str4.find ( str4a , 5 );
   if ( indexCh4a != string::npos )
      cout << "The index of the 1st element of 'clear' "
           << "after\n the 5th position in str4 is: "
           << indexCh4a << endl;
   else
      cout << "The substring 'clear' was not found in str4 ."
           << endl;

   string str4b ( "clear" );
   indexCh4b = str4.find ( str4b );
   if (indexCh4b != string::npos )
      cout << "The index of the 1st element of 'clear' "
           << "in str4 is: "
           << indexCh4b << endl;
   else
      cout << "The substring 'clear' was not found in str4 ."
           << endl << endl;
}
The original string str1 is: Hello Everyone
The index of the 1st 'e' found after the 3rd position in str1 is: 8
The Character 'x' was not found in str1.

The original string str2 is: Let me make this perfectly clear.
The index of the 1st element of 'perfect' after
the 5th position in str2 is: 17
The substring 'imperfect' was not found in str2 .

The original string str3 is: This is a sample string for this program
The index of the 1st element of sample in str3 is: 10
The index of the next occurrence of 'for' is in str3 begins at: 24

The original string str4 is: clearly this perfectly unclear.
The index of the 1st element of 'clear' after
the 5th position in str4 is: 25
The index of the 1st element of 'clear' in str4 is: 0

basic_string::find_first_not_of

Mencari string untuk karakter pertama yang bukan elemen dari string tertentu.

size_type find_first_not_of(
    value_type char_value,
    size_type offset = 0) const;

size_type find_first_not_of(
    const value_type* ptr,
    size_type offset = 0) const;

size_type find_first_not_of(
    const value_type* ptr,
    size_type offset,
    size_type count) const;

size_type find_first_not_of(
    const basic_string<CharType, Traits, Allocator>& str,
    size_type offset = 0) const;

Parameter

char_value
Nilai karakter yang fungsi anggotanya akan dicari.

offset
Indeks posisi di mana pencarian akan dimulai.

ptr
String C yang fungsi anggotanya akan dicari.

count
Jumlah karakter, menghitung maju dari karakter pertama, dalam string C yang fungsi anggotanya akan dicari.

str
String yang fungsi anggotanya akan dicari.

Nilai hasil

Indeks karakter pertama substring yang dicari ketika berhasil; jika tidak npos.

Contoh

// basic_string_find_first_not_of.cpp
// compile with: /EHsc
#include <string>
#include <iostream>

int main( )
{
   using namespace std;

   // The first member function
   // searches for a single character in a string
   string str1 ( "xddd-1234-abcd" );
   cout << "The original string str1 is: " << str1 << endl;
   basic_string <char>::size_type indexCh1a, indexCh1b;
   static const basic_string <char>::size_type npos = -1;

   indexCh1a = str1.find_first_not_of ( "d" , 2 );
   if ( indexCh1a != npos )
      cout << "The index of the 1st 'd' found after the 3rd"
           << " position in str1 is: " << indexCh1a << endl;
   else
      cout << "The character 'd' was not found in str1 ." << endl;

   indexCh1b = str1.find_first_not_of  ( "x" );
   if (indexCh1b != npos )
      cout << "The index of the 'non x' found in str1 is: "
           << indexCh1b << endl << endl;
   else
      cout << "The character 'non x' was not found in str1."
           << endl << endl;

   // The second member function searches a string
   // for a substring as specified by a C-string
   string str2 ( "BBB-1111" );
   cout << "The original string str2 is: " << str2 << endl;
   basic_string <char>::size_type indexCh2a, indexCh2b;

   const char *cstr2 = "B1";
   indexCh2a = str2.find_first_not_of ( cstr2 , 6 );
   if ( indexCh2a != npos )
      cout << "The index of the 1st occurrence of an "
           << "element of 'B1' in str2 after\n the 6th "
           << "position is: " << indexCh2a << endl;
   else
      cout << "Elements of the substring 'B1' were not"
           << "\n found in str2 after the 6th position."
           << endl;

   const char *cstr2b = "B2";
   indexCh2b = str2.find_first_not_of ( cstr2b );
   if ( indexCh2b != npos )
      cout << "The index of the 1st element of 'B2' "
           << "after\n the 0th position in str2 is: "
           << indexCh2b << endl << endl;
   else
      cout << "The substring 'B2' was not found in str2 ."
           << endl << endl << endl;

   // The third member function searches a string
   // for a substring as specified by a C-string
   string str3 ( "444-555-GGG" );
   cout << "The original string str3 is: " << str3 << endl;
   basic_string <char>::size_type indexCh3a, indexCh3b;

   const char *cstr3a = "45G";
   indexCh3a = str3.find_first_not_of ( cstr3a );
   if ( indexCh3a != npos )
      cout << "The index of the 1st occurrence of an "
           << "element in str3\n other than one of the "
           << "characters in '45G' is: " << indexCh3a
           << endl;
   else
      cout << "Elements in str3 contain only characters "
           << " in the string '45G'. "
           << endl;

   const char *cstr3b = "45G";
   indexCh3b = str3.find_first_not_of ( cstr3b , indexCh3a + 1 , 2 );
   if ( indexCh3b != npos )
      cout << "The index of the second occurrence of an "
           << "element of '45G' in str3\n after the 0th "
           << "position is: " << indexCh3b << endl << endl;
   else
      cout << "Elements in str3 contain only characters "
           << " in the string  '45G'. "
           << endl  << endl;

   // The fourth member function searches a string
   // for a substring as specified by a string
   string str4 ( "12-ab-12-ab" );
   cout << "The original string str4 is: " << str4 << endl;
   basic_string <char>::size_type indexCh4a, indexCh4b;

   string str4a ( "ba3" );
   indexCh4a = str4.find_first_not_of ( str4a , 5 );
   if (indexCh4a != npos )
      cout << "The index of the 1st non occurrence of an "
           << "element of 'ba3' in str4 after\n the 5th "
           << "position is: " << indexCh4a << endl;
   else
      cout << "Elements other than those in the substring"
           << " 'ba3' were not found in the string str4."
           << endl;

   string str4b ( "12" );
   indexCh4b = str4.find_first_not_of ( str4b  );
   if (indexCh4b != npos )
      cout << "The index of the 1st non occurrence of an "
           << "element of '12' in str4 after\n the 0th "
           << "position is: " << indexCh4b << endl;
   else
      cout << "Elements other than those in the substring"
           << " '12' were not found in the string str4."
           << endl;
}
The original string str1 is: xddd-1234-abcd
The index of the 1st 'd' found after the 3rd position in str1 is: 4
The index of the 'non x' found in str1 is: 1

The original string str2 is: BBB-1111
Elements of the substring 'B1' were not
found in str2 after the 6th position.
The index of the 1st element of 'B2' after
the 0th position in str2 is: 3

The original string str3 is: 444-555-GGG
The index of the 1st occurrence of an element in str3
other than one of the characters in '45G' is: 3
The index of the second occurrence of an element of '45G' in str3
after the 0th position is: 7

The original string str4 is: 12-ab-12-ab
The index of the 1st non occurrence of an element of 'ba3' in str4 after
the 5th position is: 5
The index of the 1st non occurrence of an element of '12' in str4 after
the 0th position is: 2

basic_string::find_first_of

Mencari string untuk karakter pertama yang cocok dengan elemen apa pun dari string yang ditentukan.

size_type find_first_of(
    value_type char_value,
    size_type offset = 0) const;

size_type find_first_of(
    const value_type* ptr,
    size_type offset = 0) const;

size_type find_first_of(
    const value_type* ptr,
    size_type offset,
    size_type count) const;

size_type find_first_of(
    const basic_string<CharType, Traits, Allocator>& str,
    size_type offset = 0) const;

Parameter

char_value
Nilai karakter yang fungsi anggotanya akan dicari.

offset
Indeks posisi di mana pencarian akan dimulai.

ptr
String C yang fungsi anggotanya akan dicari.

count
Jumlah karakter, menghitung maju dari karakter pertama, dalam string C yang fungsi anggotanya akan dicari.

str
String yang fungsi anggotanya akan dicari.

Nilai hasil

Indeks karakter pertama substring yang dicari ketika berhasil; jika tidak npos.

Contoh

// basic_string_find_first_of.cpp
// compile with: /EHsc
#include <string>
#include <iostream>

int main( )
{
   using namespace std;

   // The first member function
   // searches for a single character in a string
   string str1 ( "abcd-1234-abcd-1234" );
   cout << "The original string str1 is: " << str1 << endl;
   basic_string <char>::size_type indexCh1a, indexCh1b;
   static const basic_string <char>::size_type npos = -1;

   indexCh1a = str1.find_first_of ( "d" , 5 );
   if ( indexCh1a != npos )
      cout << "The index of the 1st 'd' found after the 5th"
           << " position in str1 is: " << indexCh1a << endl;
   else
      cout << "The character 'd' was not found in str1 ." << endl;

   indexCh1b = str1.find_first_of ( "x" );
   if ( indexCh1b != npos )
      cout << "The index of the 'x' found in str1 is: "
           << indexCh1b << endl << endl;
   else
      cout << "The character 'x' was not found in str1."
           << endl << endl;

   // The second member function searches a string
   // for any element of a substring as specified by a C-string
   string str2 ( "ABCD-1234-ABCD-1234" );
   cout << "The original string str2 is: " << str2 << endl;
   basic_string <char>::size_type indexCh2a, indexCh2b;

   const char *cstr2 = "B1";
   indexCh2a = str2.find_first_of ( cstr2 , 6 );
   if ( indexCh2a != npos )
      cout << "The index of the 1st occurrence of an "
           << "element of 'B1' in str2 after\n the 6th "
           << "position is: " << indexCh2a << endl;
   else
      cout << "Elements of the substring 'B1' were not "
           << "found in str2 after the 10th position."
           << endl;

   const char *cstr2b = "D2";
   indexCh2b = str2.find_first_of ( cstr2b );
   if ( indexCh2b != npos )
      cout << "The index of the 1st element of 'D2' "
           << "after\n the 0th position in str2 is: "
           << indexCh2b << endl << endl;
   else
      cout << "The substring 'D2' was not found in str2 ."
           << endl << endl << endl;

   // The third member function searches a string
   // for any element of a substring as specified by a C-string
   string str3 ( "123-abc-123-abc-456-EFG-456-EFG" );
   cout << "The original string str3 is: " << str3 << endl;
   basic_string <char>::size_type indexCh3a, indexCh3b;

   const char *cstr3a = "5G";
   indexCh3a = str3.find_first_of ( cstr3a );
   if ( indexCh3a != npos )
      cout << "The index of the 1st occurrence of an "
           << "element of '5G' in str3 after\n the 0th "
           << "position is: " << indexCh3a << endl;
   else
      cout << "Elements of the substring '5G' were not "
           << "found in str3\n after the 0th position."
           << endl;

   const char *cstr3b = "5GF";
   indexCh3b = str3.find_first_of  ( cstr3b , indexCh3a + 1 , 2 );
   if (indexCh3b != npos )
      cout << "The index of the second occurrence of an "
           << "element of '5G' in str3\n after the 0th "
           << "position is: " << indexCh3b << endl << endl;
   else
      cout << "Elements of the substring '5G' were not "
           << "found in str3\n after the first occurrrence."
           << endl << endl;

   // The fourth member function searches a string
   // for any element of a substring as specified by a string
   string str4 ( "12-ab-12-ab" );
   cout << "The original string str4 is: " << str4 << endl;
   basic_string <char>::size_type indexCh4a, indexCh4b;

   string str4a ( "ba3" );
   indexCh4a = str4.find_first_of ( str4a , 5 );
   if ( indexCh4a != npos )
      cout << "The index of the 1st occurrence of an "
           << "element of 'ba3' in str4 after\n the 5th "
           << "position is: " << indexCh4a << endl;
   else
      cout << "Elements of the substring 'ba3' were not "
           << "found in str4\n after the 0th position."
           << endl;

   string str4b ( "a2" );
   indexCh4b = str4.find_first_of ( str4b );
   if ( indexCh4b != npos )
      cout << "The index of the 1st occurrence of an "
           << "element of 'a2' in str4 after\n the 0th "
           << "position is: " << indexCh4b << endl;
   else
      cout << "Elements of the substring 'a2' were not "
           << "found in str4\n after the 0th position."
           << endl;
}
The original string str1 is: abcd-1234-abcd-1234
The index of the 1st 'd' found after the 5th position in str1 is: 13
The character 'x' was not found in str1.

The original string str2 is: ABCD-1234-ABCD-1234
The index of the 1st occurrence of an element of 'B1' in str2 after
the 6th position is: 11
The index of the 1st element of 'D2' after
the 0th position in str2 is: 3

The original string str3 is: 123-abc-123-abc-456-EFG-456-EFG
The index of the 1st occurrence of an element of '5G' in str3 after
the 0th position is: 17
The index of the second occurrence of an element of '5G' in str3
after the 0th position is: 22

The original string str4 is: 12-ab-12-ab
The index of the 1st occurrence of an element of 'ba3' in str4 after
the 5th position is: 9
The index of the 1st occurrence of an element of 'a2' in str4 after
the 0th position is: 1

basic_string::find_last_not_of

Mencari string untuk karakter terakhir yang bukan elemen apa pun dari string yang ditentukan.

size_type find_last_not_of(
    value_type char_value,
    size_type offset = npos) const;

size_type find_last_not_of(
    const value_type* ptr,
    size_type offset = npos) const;

size_type find_last_not_of(
    const value_type* ptr,
    size_type offset,
    size_type count) const;

size_type find_last_not_of(
    const basic_string<CharType, Traits, Allocator>& str,
    size_type offset = npos) const;

Parameter

char_value
Nilai karakter yang fungsi anggotanya akan dicari.

offset
Indeks posisi di mana pencarian akan selesai.

ptr
String C yang fungsi anggotanya akan dicari.

count
Jumlah karakter, menghitung maju dari karakter pertama, dalam string C yang fungsi anggotanya akan dicari.

str
String yang fungsi anggotanya akan dicari.

Nilai hasil

Indeks karakter pertama substring yang dicari ketika berhasil; jika tidak npos.

Contoh

// basic_string_find_last_not_of.cpp
// compile with: /EHsc
#include <string>
#include <iostream>

int main( )
{
   using namespace std;

   // The first member function
   // searches for a single character in a string
   string str1 ( "dddd-1dd4-abdd" );
   cout << "The original string str1 is: " << str1 << endl;
   basic_string <char>::size_type indexCh1a, indexCh1b;
   static const basic_string <char>::size_type npos = -1;

   indexCh1a = str1.find_last_not_of ( "d" , 7 );
   if ( indexCh1a != npos )
      cout << "The index of the last non 'd'\n found before the "
           << "7th position in str1 is: " << indexCh1a << endl;
   else
      cout << "The non 'd' character was not found ." << endl;

   indexCh1b = str1.find_last_not_of  ( "d" );
   if ( indexCh1b != npos )
      cout << "The index of the non 'd' found in str1 is: "
           << indexCh1b << endl << endl;
   else
      cout << "The Character 'non x' was not found in str1."
           << endl << endl;

   // The second member function searches a string
   // for a substring as specified by a C-string
   string str2 ( "BBB-1111" );
   cout << "The original string str2 is: " << str2 << endl;
   basic_string <char>::size_type indexCh2a, indexCh2b;

   const char *cstr2 = "B1";
   indexCh2a = str2.find_last_not_of  ( cstr2 , 6 );
   if ( indexCh2a != npos )
      cout << "The index of the last occurrence of a "
           << "element\n not of 'B1' in str2 before the 6th "
           << "position is: " << indexCh2a << endl;
   else
      cout << "Elements not of the substring 'B1' were not "
           << "\n found in str2 before the 6th position."
           << endl;

   const char *cstr2b = "B-1";
   indexCh2b = str2.find_last_not_of  ( cstr2b );
   if ( indexCh2b != npos )
      cout << "The index of the last element not "
           << "in 'B-1'\n is: "
           << indexCh2b << endl << endl;
   else
      cout << "The elements of the substring 'B-1' were "
           << "not found in str2 ."
           << endl << endl;

   // The third member function searches a string
   // for a substring as specified by a C-string
   string str3 ( "444-555-GGG" );
   cout << "The original string str3 is: " << str3 << endl;
   basic_string <char>::size_type indexCh3a, indexCh3b;

   const char *cstr3a = "45G";
   indexCh3a = str3.find_last_not_of ( cstr3a );
   if ( indexCh3a != npos )
      cout << "The index of the last occurrence of an "
           << "element in str3\n other than one of the "
           << "characters in '45G' is: " << indexCh3a
           << endl;
   else
      cout << "Elements in str3 contain only characters "
           << " in the string  '45G'. "
           << endl;

   const char *cstr3b = "45G";
   indexCh3b = str3.find_last_not_of ( cstr3b , 6 , indexCh3a - 1 );
   if (indexCh3b != npos )
      cout << "The index of the penultimate occurrence of an "
           << "element\n not in '45G' in str3 is: "
           << indexCh3b << endl << endl;
   else
      cout << "Elements in str3 contain only characters "
           << " in the string '45G'. "
           << endl  << endl;

   // The fourth member function searches a string
   // for a substring as specified by a string
   string str4 ( "12-ab-12-ab" );
   cout << "The original string str4 is: " << str4 << endl;
   basic_string <char>::size_type indexCh4a, indexCh4b;

   string str4a ( "b-a" );
   indexCh4a = str4.find_last_not_of  ( str4a , 5 );
   if ( indexCh4a != npos )
      cout << "The index of the last occurrence of an "
           << "element not\n in 'b-a' in str4 before the 5th "
           << "position is: " << indexCh4a << endl;
   else
      cout << "Elements other than those in the substring"
           << " 'b-a' were not found in the string str4."
           << endl;

   string str4b ( "12" );
   indexCh4b = str4.find_last_not_of ( str4b  );
   if ( indexCh4b != npos )
      cout << "The index of the last occurrence of an "
           << "element not in '12'\n in str4 before the end "
           << "position is: " << indexCh4b << endl;
   else
      cout << "Elements other than those in the substring"
           << " '12'\n were not found in the string str4."
           << endl;
}
The original string str1 is: dddd-1dd4-abdd
The index of the last non 'd'
found before the 7th position in str1 is: 5
The index of the non 'd' found in str1 is: 11

The original string str2 is: BBB-1111
The index of the last occurrence of a element
not of 'B1' in str2 before the 6th position is: 3
The elements of the substring 'B-1' were not found in str2 .

The original string str3 is: 444-555-GGG
The index of the last occurrence of an element in str3
other than one of the characters in '45G' is: 7
The index of the penultimate occurrence of an element
not in '45G' in str3 is: 3

The original string str4 is: 12-ab-12-ab
The index of the last occurrence of an element not
in 'b-a' in str4 before the 5th position is: 1
The index of the last occurrence of an element not in '12'
in str4 before the end position is: 10

basic_string::find_last_of

Mencari string untuk karakter terakhir yang cocok dengan elemen apa pun dari string tertentu.

size_type find_last_of(
    value_type char_value,
    size_type offset = npos) const;

size_type find_last_of(
    const value_type* ptr,
    size_type offset = npos) const;

size_type find_last_of(
    const value_type* ptr,
    size_type offset,
    size_type count) const;

size_type find_last_of(
    const basic_string<CharType, Traits, Allocator>& str,
    size_type offset = npos) const;

Parameter

char_value
Nilai karakter yang fungsi anggotanya akan dicari.

offset
Indeks posisi di mana pencarian akan selesai.

ptr
String C yang fungsi anggotanya akan dicari.

count
Jumlah karakter, menghitung maju dari karakter pertama, dalam string C yang fungsi anggotanya akan dicari.

str
String yang fungsi anggotanya akan dicari.

Nilai hasil

Indeks karakter terakhir substring yang dicari ketika berhasil; jika tidak npos.

Contoh

// basic_string_find_last_of.cpp
// compile with: /EHsc
#include <string>
#include <iostream>

int main( )
{
   using namespace std;

   // The first member function
   // searches for a single character in a string
   string str1 ( "abcd-1234-abcd-1234" );
   cout << "The original string str1 is: " << str1 << endl;
   basic_string <char>::size_type indexCh1a, indexCh1b;
   static const basic_string <char>::size_type npos = -1;

   indexCh1a = str1.find_last_of ( "d" , 14 );
   if ( indexCh1a != npos )
      cout << "The index of the last 'd' found before the 14th"
           << " position in str1 is: " << indexCh1a << endl;
   else
      cout << "The character 'd' was not found in str1 ." << endl;

   indexCh1b = str1.find_first_of ( "x" );
   if ( indexCh1b != npos )
      cout << "The index of the 'x' found in str1 is: "
           << indexCh1b << endl << endl;
   else
      cout << "The character 'x' was not found in str1."
           << endl << endl;

   // The second member function searches a string
   // for a substring as specified by a C-string
   string str2 ( "ABCD-1234-ABCD-1234" );
   cout << "The original string str2 is: " << str2 << endl;
   basic_string <char>::size_type indexCh2a, indexCh2b;

   const char *cstr2 = "B1";
   indexCh2a = str2.find_last_of  ( cstr2 , 12 );
   if (indexCh2a != npos )
      cout << "The index of the last occurrence of an "
           << "element of 'B1' in str2 before\n the 12th "
           << "position is: " << indexCh2a << endl;
   else
      cout << "Elements of the substring 'B1' were not "
           << "found in str2 before the 12th position."
           << endl;

   const char *cstr2b = "D2";
   indexCh2b = str2.find_last_of  ( cstr2b );
   if ( indexCh2b != npos )
      cout << "The index of the last element of 'D2' "
           << "after\n the 0th position in str2 is: "
           << indexCh2b << endl << endl;
   else
      cout << "The substring 'D2' was not found in str2 ."
           << endl << endl << endl;

   // The third member function searches a string
   // for a substring as specified by a C-string
   string str3 ( "456-EFG-456-EFG" );
   cout << "The original string str3 is: " << str3 << endl;
   basic_string <char>::size_type indexCh3a;

   const char *cstr3a = "5E";
   indexCh3a = str3.find_last_of ( cstr3a , 8 , 8 );
   if ( indexCh3a != npos )
      cout << "The index of the last occurrence of an "
           << "element of '5E' in str3 before\n the 8th "
           << "position is: " << indexCh3a << endl << endl;
   else
      cout << "Elements of the substring '5G' were not "
           << "found in str3\n before the 8th position."
           << endl << endl;

   // The fourth member function searches a string
   // for a substring as specified by a string
   string str4 ( "12-ab-12-ab" );
   cout << "The original string str4 is: " << str4 << endl;
   basic_string <char>::size_type indexCh4a, indexCh4b;

   string str4a ( "ba3" );
   indexCh4a = str4.find_last_of  ( str4a , 8 );
   if ( indexCh4a != npos )
      cout << "The index of the last occurrence of an "
           << "element of 'ba3' in str4 before\n the 8th "
           << "position is: " << indexCh4a << endl;
   else
      cout << "Elements of the substring 'ba3' were not "
           << "found in str4\n after the 0th position."
           << endl;

   string str4b ( "a2" );
   indexCh4b = str4.find_last_of ( str4b  );
   if ( indexCh4b != npos )
      cout << "The index of the last occurrence of an "
           << "element of 'a2' in str4 before\n the 0th "
           << "position is: " << indexCh4b << endl;
   else
      cout << "Elements of the substring 'a2' were not "
           << "found in str4\n after the 0th position."
           << endl;
}
The original string str1 is: abcd-1234-abcd-1234
The index of the last 'd' found before the 14th position in str1 is: 13
The character 'x' was not found in str1.

The original string str2 is: ABCD-1234-ABCD-1234
The index of the last occurrence of an element of 'B1' in str2 before
the 12th position is: 11
The index of the last element of 'D2' after
the 0th position in str2 is: 16

The original string str3 is: 456-EFG-456-EFG
The index of the last occurrence of an element of '5E' in str3 before
the 8th position is: 4

The original string str4 is: 12-ab-12-ab
The index of the last occurrence of an element of 'ba3' in str4 before
the 8th position is: 4
The index of the last occurrence of an element of 'a2' in str4 before
the 0th position is: 9

basic_string::front

Mengembalikan referensi ke elemen pertama dalam string.

const_reference front() const;

reference front();

Nilai hasil

Referensi ke elemen pertama string, yang harus tidak kosong.

Keterangan

basic_string::get_allocator

Mengembalikan salinan objek alokator yang digunakan untuk membuat string.

allocator_type get_allocator() const;

Nilai hasil

Alokator yang digunakan oleh string.

Keterangan

Fungsi anggota mengembalikan objek alokator tersimpan.

Alokator untuk kelas string menentukan bagaimana kelas mengelola penyimpanan. Alokator default yang disediakan dengan kelas kontainer cukup untuk sebagian besar kebutuhan pemrograman. Menulis dan menggunakan kelas alokator Anda sendiri adalah fitur C++ tingkat lanjut.

Contoh

// basic_string_get_allocator.cpp
// compile with: /EHsc
#include <string>
#include <iostream>

int main( )
{
   using namespace std;
   // The following lines declare objects
   // that use the default allocator.
   string s1;
   basic_string <char> s2;
   basic_string <char, char_traits< char >, allocator< char > > s3;

   // s4 will use the same allocator class as s1
   basic_string <char> s4( s1.get_allocator ( ) );

   basic_string <char>::allocator_type xchar = s1.get_allocator( );
   // You can now call functions on the allocator class xchar used by s1
}

basic_string::insert

Menyisipkan elemen, beberapa elemen, atau rentang elemen ke dalam string pada posisi yang ditentukan.

basic_string<CharType, Traits, Allocator>& insert(
    size_type position,
    const value_type* ptr);

basic_string<CharType, Traits, Allocator>& insert(
    size_type position,
    const value_type* ptr,
    size_type count);

basic_string<CharType, Traits, Allocator>& insert(
    size_type position,
    const basic_string<CharType, Traits, Allocator>& str);

basic_string<CharType, Traits, Allocator>& insert(
    size_type position,
    const basic_string<CharType, Traits, Allocator>& str,
    size_type offset,
    size_type count);

basic_string<CharType, Traits, Allocator>& insert(
    size_type position,
    size_type count,
    value_type char_value);

iterator insert(
    iterator iter);

iterator insert(
    iterator iter,
    value_type char_value)l
template <class InputIterator>
void insert(
    iterator iter,
    InputIterator first,
    InputIterator last);

void insert(
    iterator iter,
    size_type count,
    value_type char_value);

void insert(
    iterator iter,
    const_pointer first,
    const_pointer last);

void insert(
    iterator iter,
    const_iterator first,
    const_iterator last);

Parameter

position
Indeks posisi di belakang titik penyisipan karakter baru.

ptr
String C yang akan disisipkan sepenuhnya atau sebagian disisipkan ke dalam string.

count
Jumlah karakter yang akan disisipkan.

str
String yang akan disisipkan sepenuhnya atau sebagian dimasukkan ke dalam string target.

offset
Indeks bagian dari string sumber yang menyediakan karakter yang akan ditambahkan.

char_value
Nilai karakter elemen yang akan disisipkan.

iter
Iterator yang membahas posisi di belakang karakter yang akan disisipkan.

first
Iterator input, const_pointer, atau const_iterator mengatasi elemen pertama dalam rentang sumber yang akan disisipkan.

last
Iterator input, const_pointer, atau const_iterator mengatasi posisi yang melampaui elemen terakhir dalam rentang sumber yang akan disisipkan.

Nilai hasil

Fungsi yang mengembalikan nilai mengembalikan:

  • Referensi ke basic_string yang berisi string asli ditambah karakter baru.
  • Iterator di awal karakter yang disisipkan.

Contoh

// basic_string_insert.cpp
// compile with: /EHsc
#include <string>
#include <iostream>

int main( )
{
   using namespace std;

   // The first member function inserting a C-string
   // at a given position
   basic_string <char> str1a ( "way" );
   const char *cstr1a = "a";
   str1a.insert ( 0, cstr1a );
   cout << "The string with a C-string inserted at position 0 is: "
        << str1a << "." << endl;

   // The second member function inserting a C-string
   // at a given position for a specified number of elements
   basic_string <char> str2a ( "Good" );
   const char *cstr2a = "Bye Bye Baby";
   str2a.insert ( 4, cstr2a ,3 );
   cout << "The string with a C-string inserted at the end is: "
        << str2a << "." << endl;

   // The third member function inserting a string
   // at a given position
   basic_string <char> str3a ( "Bye" );
   string str3b ( "Good" );
   str3a.insert ( 0, str3b );
   cout << "The string with a string inserted at position 0 is: "
        << str3a << "." << endl;

   // The fourth member function inserting part of
   // a string at a given position
   basic_string <char> str4a ( "Good " );
   string str4b ( "Bye Bye Baby" );
   str4a.insert ( 5, str4b , 8 , 4 );
   cout << "The string with part of a string inserted at position 4 is: "
        << str4a << "." << endl;

   // The fifth member function inserts a number of characters
   // at a specified position in the string
   string str5 ( "The number is: ." );
   str5.insert ( 15 , 3 , '3' );
   cout << "The string with characters inserted is: "
        << str5 << endl;

   // The sixth member function inserts a character
   // at a specified position in the string
   string str6 ( "ABCDFG" );
   basic_string <char>::iterator str6_Iter = ( str6.begin ( ) + 4 );
   str6.insert ( str6_Iter , 'e' );
   cout << "The string with a character inserted is: "
        << str6 << endl;

   // The seventh member function inserts a range
   // at a specified position in the string
   string str7a ( "ABCDHIJ" );
   string str7b ( "abcdefgh" );
   basic_string <char>::iterator str7a_Iter = (str7a.begin ( ) + 4 );
   str7a.insert ( str7a_Iter , str7b.begin ( ) + 4 , str7b.end ( ) -1 );
   cout << "The string with a character inserted from a range is: "
        << str7a << endl;

   // The eighth member function inserts a number of
   // characters at a specified position in the string
   string str8 ( "ABCDHIJ" );
   basic_string <char>::iterator str8_Iter = ( str8.begin ( ) + 4 );
   str8.insert ( str8_Iter , 3 , 'e' );
   cout << "The string with a character inserted from a range is: "
        << str8 << endl;
}
The string with a C-string inserted at position 0 is: away.
The string with a C-string inserted at the end is: GoodBye.
The string with a string inserted at position 0 is: GoodBye.
The string with part of a string inserted at position 4 is: Good Baby.
The string with characters inserted is: The number is: 333.
The string with a character inserted is: ABCDeFG
The string with a character inserted from a range is: ABCDefgHIJ
The string with a character inserted from a range is: ABCDeeeHIJ

basic_string::iterator

Jenis yang menyediakan iterator akses acak yang dapat mengakses dan membaca const elemen dalam string.

typedef implementation-defined iterator;

Keterangan

Jenis iterator dapat digunakan untuk memodifikasi nilai karakter dan digunakan untuk melakukan iterasi melalui string ke arah depan.

Contoh

Lihat contoh untuk begin contoh cara mendeklarasikan dan menggunakan iterator.

basic_string::length

Mengembalikan jumlah elemen saat ini dalam string.

size_type length() const;

Keterangan

Fungsi anggota sama sizedengan .

Contoh

// basic_string_length.cpp
// compile with: /EHsc
#include <string>
#include <iostream>

int main( )
{
   using namespace std;
   string str1 ("Hello world");
   cout << "The original string str1 is: " << str1 << endl;

   // The size and length member functions differ in name only
   basic_string <char>::size_type sizeStr1, lenStr1;
   sizeStr1 = str1.size ( );
   lenStr1 = str1.length ( );

   basic_string <char>::size_type capStr1, max_sizeStr1;
   capStr1 = str1.capacity ( );
   max_sizeStr1 = str1.max_size ( );

   // Compare size, length, capacity & max_size of a string
   cout << "The current size of original string str1 is: "
        << sizeStr1 << "." << endl;
   cout << "The current length of original string str1 is: "
        << lenStr1 << "." << endl;
   cout << "The capacity of original string str1 is: "
        << capStr1 << "." << endl;
   cout << "The max_size of original string str1 is: "
        << max_sizeStr1 << "." << endl << endl;

   str1.erase ( 6, 5 );
   cout << "The modified string str1 is: " << str1 << endl;

   sizeStr1 = str1.size ( );
   lenStr1 = str1.length ( );
   capStr1 = str1.capacity ( );
   max_sizeStr1 = str1.max_size ( );

   // Compare size, length, capacity & max_size of a string
   // after erasing part of the original string
   cout << "The current size of modified string str1 is: "
        << sizeStr1 << "." << endl;
   cout << "The current length of modified string str1 is: "
        << lenStr1 << "." << endl;
   cout << "The capacity of modified string str1 is: "
        << capStr1 << "." << endl;
   cout << "The max_size of modified string str1 is: "
        << max_sizeStr1 << "." << endl;
}

basic_string::max_size

Mengembalikan jumlah maksimum karakter yang dapat dimuat string.

size_type max_size() const;

Nilai hasil

Jumlah maksimum karakter yang dapat dimuat string.

Keterangan

Pengecualian jenis length_error Kelas dilemparkan ketika operasi menghasilkan string dengan panjang lebih besar dari ukuran maksimum.

Contoh

// basic_string_max_size.cpp
// compile with: /EHsc
#include <string>
#include <iostream>

int main( )
{
   using namespace std;
   string str1 ("Hello world");
   cout << "The original string str1 is: " << str1 << endl;

   // The size and length member functions differ in name only
   basic_string <char>::size_type sizeStr1, lenStr1;
   sizeStr1 = str1.size ( );
   lenStr1 = str1.length ( );

   basic_string <char>::size_type capStr1, max_sizeStr1;
   capStr1 = str1.capacity ( );
   max_sizeStr1 = str1.max_size ( );

   // Compare size, length, capacity & max_size of a string
   cout << "The current size of original string str1 is: "
        << sizeStr1 << "." << endl;
   cout << "The current length of original string str1 is: "
        << lenStr1 << "." << endl;
   cout << "The capacity of original string str1 is: "
        << capStr1 << "." << endl;
   cout << "The max_size of original string str1 is: "
        << max_sizeStr1 << "." << endl << endl;

   str1.erase ( 6, 5 );
   cout << "The modified string str1 is: " << str1 << endl;

   sizeStr1 = str1.size ( );
   lenStr1 = str1.length ( );
   capStr1 = str1.capacity ( );
   max_sizeStr1 = str1.max_size ( );

   // Compare size, length, capacity & max_size of a string
   // after erasing part of the original string
   cout << "The current size of modified string str1 is: "
        << sizeStr1 << "." << endl;
   cout << "The current length of modified string str1 is: "
        << lenStr1 << "." << endl;
   cout << "The capacity of modified string str1 is: "
        << capStr1 << "." << endl;
   cout << "The max_size of modified string str1 is: "
        << max_sizeStr1 << "." << endl;
}

basic_string::npos

Nilai integral yang tidak ditandatangani diinisialisasi ke -1 yang menunjukkan "tidak ditemukan" atau "semua karakter yang tersisa" ketika fungsi pencarian gagal.

static const size_type npos = -1;

Keterangan

Ketika nilai yang dikembalikan akan diperiksa untuk npos nilainya, nilai tersebut mungkin tidak berfungsi kecuali nilai yang dikembalikan berjenis size_type dan bukan int atau unsigned.

Contoh

Lihat contoh untuk find contoh cara mendeklarasikan dan menggunakan npos.

basic_string::operator+=

Menambahkan karakter ke string.

basic_string<CharType, Traits, Allocator>& operator+=(
    value_type char_value);

basic_string<CharType, Traits, Allocator>& operator+=(
    const value_type* ptr);

basic_string<CharType, Traits, Allocator>& operator+=(
    const basic_string<CharType, Traits, Allocator>& right);

Parameter

char_value
Karakter yang akan ditambahkan.

ptr
Karakter string C yang akan ditambahkan.

right
Karakter string yang akan ditambahkan.

Nilai hasil

Referensi ke objek string yang sedang ditambahkan dengan karakter yang diteruskan oleh fungsi anggota.

Keterangan

Karakter dapat ditambahkan ke string menggunakan operator+= fungsi append atau anggota atau push_back. Menambahkan operator+= nilai argumen tunggal sementara beberapa fungsi anggota penambahan argumen memungkinkan bagian tertentu dari string ditentukan untuk ditambahkan.

Contoh

// basic_string_op_app.cpp
// compile with: /EHsc
#include <string>
#include <iostream>

int main( )
{
   using namespace std;

   // The first member function
   // appending a single character to a string
   string str1a ( "Hello" );
   cout << "The original string str1 is: " << str1a << endl;
   str1a +=  '!' ;
   cout << "The string str1 appended with an exclamation is: "
        << str1a << endl << endl;

   // The second member function
   // appending a C-string to a string
   string  str1b ( "Hello " );
   const char *cstr1b = "Out There";
   cout << "The C-string cstr1b is: " << cstr1b << endl;
   str1b +=  cstr1b;
   cout << "Appending the C-string cstr1b to string str1 gives: "
        << str1b << "." << endl << endl;

   // The third member function
   // appending one string to another in two ways,
   // comparing append and operator [ ]
   string str1d ( "Hello " ), str2d ( "Wide " ), str3d ( "World" );
   cout << "The string str2d is: " << str2d << endl;
   str1d.append ( str2d );
   cout << "The appended string str1d is: "
        << str1d << "." << endl;
   str1d += str3d;
   cout << "The doubly appended strig str1 is: "
        << str1d << "." << endl << endl;
}
The original string str1 is: Hello
The string str1 appended with an exclamation is: Hello!

The C-string cstr1b is: Out There
Appending the C-string cstr1b to string str1 gives: Hello Out There.

The string str2d is: Wide
The appended string str1d is: Hello Wide .
The doubly appended strig str1 is: Hello Wide World.

basic_string::operator=

Menetapkan nilai karakter baru ke konten string.

basic_string<CharType, Traits, Allocator>& operator=(
    value_type char_value);

basic_string<CharType, Traits, Allocator>& operator=(
    const value_type* ptr);

basic_string<CharType, Traits, Allocator>& operator=(
    const basic_string<CharType, Traits, Allocator>& right);

basic_string<CharType, Traits, Allocator>& operator=(
    const basic_string<CharType, Traits, Allocator>&& right);

Parameter

char_value
Nilai karakter yang akan ditetapkan.

ptr
Penunjuk ke karakter string C yang akan ditetapkan ke string target.

right
String sumber yang karakternya akan ditetapkan ke string target.

Nilai hasil

Referensi ke objek string yang sedang ditetapkan karakter baru oleh fungsi anggota.

Keterangan

String mungkin diberi nilai karakter baru. Nilai baru mungkin berupa string dan C-string atau satu karakter. operator= dapat digunakan jika nilai baru dapat dijelaskan oleh satu parameter, jika tidak, fungsi assignanggota , yang memiliki beberapa parameter, dapat digunakan untuk menentukan bagian string mana yang akan ditetapkan ke string target.

Contoh

// basic_string_op_assign.cpp
// compile with: /EHsc
#include <string>
#include <iostream>

int main( )
{
   using namespace std;

   // The first member function assigning a
   // character of a certain value to a string
   string str1a ( "Hello " );
   str1a = '0';
   cout << "The string str1 assigned with the zero character is: "
        << str1a << endl << endl;

   // The second member function assigning the
   // characters of a C-string to a string
   string  str1b;
   const char *cstr1b = "Out There";
   cout << "The C-string cstr1b is: " << cstr1b <<  "." << endl;
   str1b = cstr1b;
   cout << "Assigning the C-string cstr1a to string str1 gives: "
        << str1b << "." << endl << endl;

   // The third member function assigning the characters
   // from one string to another string in two equivalent
   // ways, comparing the assign and operator =
   string str1c ( "Hello" ), str2c ( "Wide" ), str3c ( "World" );
   cout << "The original string str1 is: " << str1c << "." << endl;
   cout << "The string str2c is: " << str2c << "." << endl;
   str1c.assign ( str2c );
   cout << "The string str1 newly assigned with string str2c is: "
        << str1c << "." << endl;
   cout << "The string str3c is: " << str3c << "." << endl;
   str1c = str3c;
   cout << "The string str1 reassigned with string str3c is: "
        << str1c << "." << endl << endl;
}
The string str1 assigned with the zero character is: 0

The C-string cstr1b is: Out There.
Assigning the C-string cstr1a to string str1 gives: Out There.

The original string str1 is: Hello.
The string str2c is: Wide.
The string str1 newly assigned with string str2c is: Wide.
The string str3c is: World.
The string str1 reassigned with string str3c is: World.

basic_string::operator[]

Menyediakan referensi ke karakter dengan indeks tertentu dalam string.

const_reference operator[](size_type offset) const;
reference operator[](size_type offset);

Parameter

offset
Indeks posisi elemen yang akan dirujuk.

Nilai hasil

Referensi ke karakter string pada posisi yang ditentukan oleh indeks parameter.

Keterangan

Elemen pertama dari string memiliki indeks nol, dan elemen berikut diindeks secara berturut-turut oleh bilangan bulat positif. Ini berarti bahwa string panjang n memiliki elemen nth yang diindeks oleh angka n - 1.

operator[] lebih cepat daripada fungsi at anggota untuk menyediakan akses baca dan tulis ke elemen string.

operator[] tidak memeriksa apakah indeks yang diteruskan sebagai parameter valid, tetapi fungsi at anggota melakukannya dan demikian harus digunakan dalam validitas tidak pasti. Indeks yang tidak valid (indeks kurang yang nol atau lebih besar dari atau sama dengan ukuran string) yang diteruskan ke fungsi at anggota melempar out_of_range pengecualian Kelas . Indeks yang tidak valid diteruskan untuk operator[] menghasilkan perilaku yang tidak ditentukan, tetapi indeks yang sama dengan panjang string adalah indeks yang valid untuk string const dan operator mengembalikan karakter null saat melewati indeks ini.

Referensi yang dikembalikan mungkin tidak valid oleh realokasi string atau modifikasi untuk non-stringconst .

Saat mengkompilasi dengan _ITERATOR_DEBUG_LEVEL diatur ke 1 atau 2, kesalahan runtime akan terjadi jika Anda mencoba mengakses elemen di luar batas string. Untuk informasi selengkapnya, lihat Iterator yang Diperiksa.

Contoh

// basic_string_op_ref.cpp
// compile with: /EHsc
#include <string>
#include <iostream>

int main( )
{
   using namespace std;
   string str1 ( "Hello world" ), str2 ( "Goodbye world" );
   const string cstr1 ( "Hello there" ), cstr2 ( "Goodbye now" );
   cout << "The original string str1 is: " << str1 << endl;
   cout << "The original string str2 is: " << str2 << endl;

   // Element access to the non-const strings
   basic_string <char>::reference refStr1 = str1 [6];
   basic_string <char>::reference refStr2 = str2.at ( 3 );

   cout << "The character with an index of 6 in string str1 is: "
        << refStr1 << "." << endl;
   cout << "The character with an index of 3 in string str2 is: "
        << refStr2 << "." << endl;

   // Element access to the const strings
   basic_string <char>::const_reference crefStr1 = cstr1 [ cstr1.length ( ) ];
   basic_string <char>::const_reference crefStr2 = cstr2.at ( 8 );

   if ( crefStr1 == '\0' )
      cout << "The null character is returned as a valid reference."
           << endl;
   else
      cout << "The null character is not returned." << endl;
   cout << "The character with index of 8 in the const string cstr2 is: "
        << crefStr2 << "." << endl;
}

basic_string::pointer

Jenis yang menyediakan penunjuk ke elemen karakter dalam string atau array karakter.

typedef typename allocator_type::pointer pointer;

Keterangan

Jenisnya adalah sinonim untuk allocator_type::pointer.

Untuk jenis string, setara dengan char *.

Contoh

// basic_string_pointer.cpp
// compile with: /EHsc
#include <string>
#include <iostream>

int main( )
{
   using namespace std;
   basic_string<char>::pointer pstr1a = "In Here";
   char *cstr1b = "Out There";
   cout << "The string pstr1a is: " << pstr1a <<  "." << endl;
   cout << "The C-string cstr1b is: " << cstr1b << "." << endl;
}
The string pstr1a is: In Here.
The C-string cstr1b is: Out There.

basic_string::pop_back

Menghapus elemen terakhir string.

void pop_back();

Keterangan

Fungsi anggota ini secara efektif memanggil erase(size() - 1) untuk menghapus elemen terakhir dari urutan, yang harus tidak kosong.

basic_string::push_back

Menambahkan elemen ke akhir string.

void push_back(value_type char_value);

Parameter

char_value
Karakter yang akan ditambahkan ke akhir string.

Keterangan

Fungsi anggota secara efektif memanggil insert( end, char_value ). Untuk informasi lebih lanjut, lihat insert dan end.

Contoh

// basic_string_push_back.cpp
// compile with: /EHsc
#include <string>
#include <iostream>

int main( )
{
   using namespace std;
   string str1 ( "abc" );
   basic_string <char>::iterator str_Iter, str1_Iter;

   cout << "The original string str1 is: ";
   for ( str_Iter = str1.begin( ); str_Iter != str1.end( ); str_Iter++ )
      cout << *str_Iter;
   cout << endl;

   // str1.push_back ( 'd' );
   str1_Iter = str1.end ( );
   str1_Iter--;
   cout << "The last character-letter of the modified str1 is now: "
        << *str1_Iter << endl;

   cout << "The modified string str1 is: ";
   for ( str_Iter = str1.begin( ); str_Iter != str1.end( ); str_Iter++ )
      cout << *str_Iter;
   cout << endl;
}
The original string str1 is: abc
The last character-letter of the modified str1 is now: c
The modified string str1 is: abc

basic_string::rbegin

Mengembalikan iterator ke elemen pertama dalam string terbalik.

const_reverse_iterator rbegin() const;

reverse_iterator rbegin();

Nilai hasil

Mengembalikan iterator akses acak ke elemen pertama dalam string terbalik, membahas apa yang akan menjadi elemen terakhir dalam string yang tidak terbalik yang sesuai.

Keterangan

rbegin digunakan dengan string terbalik seperti begin yang digunakan dengan string.

Jika nilai rbegin pengembalian ditetapkan ke const_reverse_iterator, objek string tidak dapat dimodifikasi. Jika nilai rbegin pengembalian ditetapkan ke reverse_iterator, objek string dapat dimodifikasi.

rbegin dapat digunakan untuk menginisialisasi iterasi melalui string mundur.

Contoh

// basic_string_rbegin.cpp
// compile with: /EHsc
#include <string>
#include <iostream>

int main( )
{
   using namespace std;
   string str1 ( "Able was I ere I saw Elba" ), str2;
   basic_string <char>::reverse_iterator str_rIter, str1_rIter, str2_rIter;
   basic_string <char>::const_reverse_iterator str1_rcIter;

   str1_rIter = str1.rbegin ( );
   // str1_rIter--;
   cout << "The first character-letter of the reversed string str1 is: "
        << *str1_rIter << endl;
   cout << "The full reversed string str1 is:\n ";
   for ( str_rIter = str1.rbegin( ); str_rIter != str1.rend( ); str_rIter++ )
      cout << *str_rIter;
   cout << endl;

   // The dereferenced iterator can be used to modify a character
   *str1_rIter = 'A';
   cout << "The first character-letter of the modified str1 is now: "
        << *str1_rIter << endl;
   cout << "The full modified reversed string str1 is now:\n ";
   for ( str_rIter = str1.rbegin( ); str_rIter != str1.rend( ); str_rIter++ )
      cout << *str_rIter;
   cout << endl;

   // The following line would be an error because iterator is const
   // *str1_rcIter = 'A';

   // For an empty string, begin is equivalent to end
   if ( str2.rbegin( ) == str2.rend ( ) )
      cout << "The string str2 is empty." << endl;
   else
      cout << "The stringstr2  is not empty." << endl;
}
The first character-letter of the reversed string str1 is: a
The full reversed string str1 is:
ablE was I ere I saw elbA
The first character-letter of the modified str1 is now: A
The full modified reversed string str1 is now:
AblE was I ere I saw elbA
The string str2 is empty.

basic_string::reference

Jenis yang menyediakan referensi ke elemen yang disimpan dalam string.

typedef typename allocator_type::reference reference;

Keterangan

Jenis reference dapat digunakan untuk mengubah nilai elemen.

Jenisnya adalah sinonim untuk allocator_type::reference.

Untuk jenis string, setara dengan chr&.

Contoh

Lihat contoh untuk at contoh cara mendeklarasikan dan menggunakan reference.

basic_string::rend

Mengembalikan iterator yang membahas lokasi yang menggantikan elemen terakhir dalam string terbalik.

const_reverse_iterator rend() const;

reverse_iterator rend();

Nilai hasil

Iterator akses acak terbalik yang membahas lokasi yang menggantikan elemen terakhir dalam string terbalik.

Keterangan

rend digunakan dengan string terbalik seperti end yang digunakan dengan string.

Jika nilai rend pengembalian ditetapkan ke const_reverse_iterator, objek string tidak dapat dimodifikasi. Jika nilai rend pengembalian ditetapkan ke reverse_iterator, objek string dapat dimodifikasi.

rend dapat digunakan untuk menguji apakah iterator terbalik telah mencapai akhir stringnya.

Nilai yang dikembalikan oleh rend tidak boleh didereferensikan.

Contoh

// basic_string_rend.cpp
// compile with: /EHsc
#include <string>
#include <iostream>

int main( )
{
   using namespace std;
   string str1 ("Able was I ere I saw Elba"), str2;
   basic_string <char>::reverse_iterator str_rIter, str1_rIter, str2_rIter;
   basic_string <char>::const_reverse_iterator str1_rcIter;

   str1_rIter = str1.rend ( );
   str1_rIter--;
   cout << "The last character-letter of the reversed string str1 is: "
        << *str1_rIter << endl;
   cout << "The full reversed string str1 is:\n ";
   for ( str_rIter = str1.rbegin( ); str_rIter != str1.rend( ); str_rIter++ )
      cout << *str_rIter;
   cout << endl;

   // The dereferenced iterator can be used to modify a character
   *str1_rIter = 'o';
   cout << "The last character-letter of the modified str1 is now: "
        << *str1_rIter << endl;
   cout << "The full modified reversed string str1 is now:\n ";
   for ( str_rIter = str1.rbegin( ); str_rIter != str1.rend( ); str_rIter++ )
      cout << *str_rIter;
   cout << endl;

   // The following line would be an error because iterator is const
   // *str1_rcIter = 'T';

   // For an empty string, end is equivalent to begin
   if ( str2.rbegin( ) == str2.rend ( ) )
      cout << "The string str2 is empty." << endl;
   else
      cout << "The stringstr2  is not empty." << endl;
}
The last character-letter of the reversed string str1 is: A
The full reversed string str1 is:
ablE was I ere I saw elbA
The last character-letter of the modified str1 is now: o
The full modified reversed string str1 is now:
ablE was I ere I saw elbo
The string str2 is empty.

basic_string::replace

Mengganti elemen dalam string pada posisi tertentu dengan karakter tertentu, atau dengan karakter yang disalin dari rentang, string, atau string C lainnya.

basic_string<CharType, Traits, Allocator>& replace(
    size_type position_1,
    size_type number_1,
    const value_type* ptr);

basic_string<CharType, Traits, Allocator>& replace(
    size_type position_1,
    size_type number_1,
    const basic_string<CharType, Traits, Allocator>& str);

basic_string<CharType, Traits, Allocator>& replace(
    size_type position_1,
    size_type number_1,
    const value_type* ptr,
    size_type number_2);

basic_string<CharType, Traits, Allocator>& replace(
    size_type position_1,
    size_type number_1,
    const basic_string<CharType, Traits, Allocator>& str,
    size_type position_2,
    size_type number_2);

basic_string<CharType, Traits, Allocator>& replace(
    size_type position_1,
    size_type number_1,
    size_type count,
    value_type char_value);

basic_string<CharType, Traits, Allocator>& replace(
    iterator first0,
    iterator last0,
    const value_type* ptr);

basic_string<CharType, Traits, Allocator>& replace(
    iterator first0,
    iterator last0,
    const basic_string<CharType, Traits, Allocator>& str);

basic_string<CharType, Traits, Allocator>& replace(
    iterator first0,
    iterator last0,
    const value_type* ptr,
    size_type number_2);

basic_string<CharType, Traits, Allocator>& replace(
    iterator first0,
    iterator last0,
    size_type number_2,
    value_type char_value);

template <class InputIterator>
basic_string<CharType, Traits, Allocator>& replace(
    iterator first0,
    iterator last0,
    InputIterator first,
    InputIterator last);

basic_string<CharType, Traits, Allocator>& replace(
    iterator first0,
    iterator last0,
    const_pointer first,
    const_pointer last);

basic_string<CharType, Traits, Allocator>& replace(
    iterator first0,
    iterator last0,
    const_iterator first,
    const_iterator last);

Parameter

str
String yang akan menjadi sumber karakter untuk string operand.

position_1
Indeks string operand tempat penggantian dimulai.

number_1
Jumlah maksimum karakter yang akan diganti dalam string operand.

position_2
Indeks string parameter tempat penyalinan dimulai.

number_2
Jumlah maksimum karakter yang akan digunakan dari parameter C-string.

ptr
String C yang akan menjadi sumber karakter untuk string operand.

char_value
Karakter yang akan disalin ke dalam string operand.

first0
Iterator yang membahas karakter pertama yang akan dihapus dalam string operand.

last0
Iterator yang membahas karakter terakhir yang akan dihapus dalam string operand.

first
Iterator, const_pointer, atau const_iterator mengatasi karakter pertama yang akan disalin dalam string parameter.

last
Iterator, const_pointer, atau const_iterator mengatasi karakter terakhir yang akan disalin dalam string parameter.

count
Berapa kali char_value disalin ke dalam string operand.

Nilai hasil

String operan dengan pengganti yang dibuat.

Contoh

// basic_string_replace.cpp
// compile with: /EHsc
#include <string>
#include <iostream>

int main( )
{
   using namespace std;

   // The first two member functions replace
   // part of the operand string with
   // characters from a parameter string or C-string
   string result1a, result1b;
   string s1o ( "AAAAAAAA" );
   string s1p ( "BBB" );
   const char* cs1p = "CCC";
   cout << "The operand string s1o is: " << s1o << endl;
   cout << "The parameter string s1p is: " << s1p << endl;
   cout << "The parameter C-string cs1p is: " << cs1p << endl;
   result1a = s1o.replace ( 1 , 3 , s1p );
   cout << "The result of s1o.replace ( 1 , 3 , s1p )\n is "
        << "the string: " << result1a << "." << endl;
   result1b = s1o.replace ( 5 , 3 , cs1p );
   cout << "The result of s1o.replace ( 5 , 3 , cs1p )\n is "
        << "the string: " << result1b << "." << endl;
   cout << endl;

   // The third & fourth member function replace
   // part of the operand string with characters
   // form part of a parameter string or C-string
   string result2a, result2b;
   string s2o ( "AAAAAAAA" );
   string s2p ( "BBB" );
   const char* cs2p = "CCC";
   cout << "The operand string s2o is: " << s2o << endl;
   cout << "The parameter string s1p is: " << s2p << endl;
   cout << "The parameter C-string cs2p is: " << cs2p << endl;
   result2a = s2o.replace ( 1 , 3 , s2p , 1 , 2 );
   cout << "The result of s2o.replace (1, 3, s2p, 1, 2)\n is "
        << "the string: " << result2a << "." << endl;
   result2b = s2o.replace ( 4 , 3 , cs2p , 1 );
   cout << "The result of s2o.replace (4 ,3 ,cs2p)\n is "
        << "the string: " << result2b << "." << endl;
   cout << endl;

   // The fifth member function replaces
   // part of the operand string with characters
   string result3a;
   string s3o ( "AAAAAAAA" );
   char ch3p = 'C';
   cout << "The operand string s3o is: " << s3o << endl;
   cout << "The parameter character c1p is: " << ch3p << endl;
   result3a = s3o.replace ( 1 , 3 , 4 , ch3p );
   cout << "The result of s3o.replace(1, 3, 4, ch3p)\n is "
        << "the string: " << result3a << "." << endl;
   cout << endl;

   // The sixth & seventh member functions replace
   // part of the operand string, delineated with iterators,
   // with a parameter string or C-string
   string s4o ( "AAAAAAAA" );
   string s4p ( "BBB" );
   const char* cs4p = "CCC";
   cout << "The operand string s4o is: " << s4o << endl;
   cout << "The parameter string s4p is: " << s4p << endl;
   cout << "The parameter C-string cs4p is: " << cs4p << endl;
   basic_string<char>::iterator IterF0, IterL0;
   IterF0 = s4o.begin ( );
   IterL0 = s4o.begin ( ) + 3;
   string result4a, result4b;
   result4a = s4o.replace ( IterF0 , IterL0 , s4p );
   cout << "The result of s1o.replace (IterF0, IterL0, s4p)\n is "
        << "the string: " << result4a << "." << endl;
   result4b = s4o.replace ( IterF0 , IterL0 , cs4p );
   cout << "The result of s4o.replace (IterF0, IterL0, cs4p)\n is "
        << "the string: " << result4b << "." << endl;
   cout << endl;

   // The 8th member function replaces
   // part of the operand string delineated with iterators
   // with a number of characters from a parameter C-string
   string s5o ( "AAAAAAAF" );
   const char* cs5p = "CCCBB";
   cout << "The operand string s5o is: " << s5o << endl;
   cout << "The parameter C-string cs5p is: " << cs5p << endl;
   basic_string<char>::iterator IterF1, IterL1;
   IterF1 = s5o.begin ( );
   IterL1 = s5o.begin ( ) + 4;
   string result5a;
   result5a = s5o.replace ( IterF1 , IterL1 , cs5p , 4 );
   cout << "The result of s5o.replace (IterF1, IterL1, cs4p ,4)\n is "
        << "the string: " << result5a << "." << endl;
   cout << endl;

   // The 9th member function replaces
   // part of the operand string delineated with iterators
   // with specified characters
   string s6o ( "AAAAAAAG" );
   char ch6p = 'q';
   cout << "The operand string s6o is: " << s6o << endl;
   cout << "The parameter character ch6p is: " << ch6p << endl;
   basic_string<char>::iterator IterF2, IterL2;
   IterF2 = s6o.begin ( );
   IterL2 = s6o.begin ( ) + 3;
   string result6a;
   result6a = s6o.replace ( IterF2 , IterL2 , 4 , ch6p );
   cout << "The result of s6o.replace (IterF1, IterL1, 4, ch6p)\n is "
        << "the string: " << result6a << "." << endl;
   cout << endl;

   // The 10th member function replaces
   // part of the operand string delineated with iterators
   // with part of a parameter string delineated with iterators
   string s7o ( "OOOOOOO" );
   string s7p ( "PPPP" );
   cout << "The operand string s7o is: " << s7o << endl;
   cout << "The parameter string s7p is: " << s7p << endl;
   basic_string<char>::iterator IterF3, IterL3, IterF4, IterL4;
   IterF3 = s7o.begin ( ) + 1;
   IterL3 = s7o.begin ( ) + 3;
   IterF4 = s7p.begin ( );
   IterL4 = s7p.begin ( ) + 2;
   string result7a;
   result7a = s7o.replace ( IterF3 , IterL3 , IterF4 , IterL4 );
   cout << "The result of s7o.replace (IterF3 ,IterL3 ,IterF4 ,IterL4)\n is "
        << "the string: " << result7a << "." << endl;
   cout << endl;
}
The operand string s1o is: AAAAAAAA
The parameter string s1p is: BBB
The parameter C-string cs1p is: CCC
The result of s1o.replace ( 1 , 3 , s1p )
is the string: ABBBAAAA.
The result of s1o.replace ( 5 , 3 , cs1p )
is the string: ABBBACCC.

The operand string s2o is: AAAAAAAA
The parameter string s1p is: BBB
The parameter C-string cs2p is: CCC
The result of s2o.replace (1, 3, s2p, 1, 2)
is the string: ABBAAAA.
The result of s2o.replace (4 ,3 ,cs2p)
is the string: ABBAC.

The operand string s3o is: AAAAAAAA
The parameter character c1p is: C
The result of s3o.replace(1, 3, 4, ch3p)
is the string: ACCCCAAAA.

The operand string s4o is: AAAAAAAA
The parameter string s4p is: BBB
The parameter C-string cs4p is: CCC
The result of s1o.replace (IterF0, IterL0, s4p)
is the string: BBBAAAAA.
The result of s4o.replace (IterF0, IterL0, cs4p)
is the string: CCCAAAAA.

The operand string s5o is: AAAAAAAF
The parameter C-string cs5p is: CCCBB
The result of s5o.replace (IterF1, IterL1, cs4p ,4)
is the string: CCCBAAAF.

The operand string s6o is: AAAAAAAG
The parameter character ch6p is: q
The result of s6o.replace (IterF1, IterL1, 4, ch6p)
is the string: qqqqAAAAG.

The operand string s7o is: OOOOOOO
The parameter string s7p is: PPPP
The result of s7o.replace (IterF3 ,IterL3 ,IterF4 ,IterL4)
is the string: OPPOOOO.

basic_string::reserve

Mengatur kapasitas string ke angka setidaknya sehebat angka yang ditentukan.

void reserve(size_type count = 0);

Parameter

count
Jumlah karakter yang memorinya sedang dicadangkan.

Keterangan

Memiliki kapasitas yang cukup penting karena realokasi adalah proses yang memakan waktu. Dan, ini membatalkan semua referensi, pointer, dan iterator yang merujuk ke karakter dalam string.

Konsep kapasitas untuk jenis objek string sama dengan untuk objek jenis vector. Tidak seperti vector, fungsi reserve anggota dapat dipanggil untuk menyusutkan kapasitas objek. Permintaan tidak mengikat dan mungkin atau mungkin tidak terjadi. Karena nilai default untuk parameter adalah nol, panggilan reserve adalah permintaan non-pengikatan untuk menyusutkan kapasitas string agar sesuai dengan jumlah karakter yang saat ini berada dalam string. Kapasitas tidak pernah berkurang di bawah jumlah karakter saat ini.

reserve Panggilan adalah satu-satunya cara yang mungkin untuk menyusutkan kapasitas string. Namun, seperti disebutkan di atas, permintaan ini tidak mengikat dan mungkin tidak terjadi.

Contoh

// basic_string_reserve.cpp
// compile with: /EHsc
#include <string>
#include <iostream>

int main( )
{
   using namespace std;
   string str1 ("Hello world");
   cout << "The original string str1 is: " << str1 << endl;

   basic_string <char>::size_type sizeStr1, sizerStr1;
   sizeStr1 = str1.size ( );
   basic_string <char>::size_type capStr1, caprStr1;
   capStr1 = str1.capacity ( );

   // Compare size & capacity of the original string
   cout << "The current size of original string str1 is: "
        << sizeStr1 << "." << endl;
   cout << "The capacity of original string str1 is: "
        << capStr1 << "." << endl << endl;

   // Compare size & capacity of the string
   // with added capacity
   str1.reserve ( 40 );
   sizerStr1 = str1.size ( );
   caprStr1 = str1.capacity ( );

   cout << "The string str1with augmented capacity is: "
        << str1 << endl;
   cout << "The current size of string str1 is: "
        << sizerStr1 << "." << endl;
   cout << "The new capacity of string str1 is: "
        << caprStr1 << "." << endl << endl;

   // Compare size & capacity of the string
   // with downsized capacity
   str1.reserve ( );
   basic_string <char>::size_type sizedStr1;
   basic_string <char>::size_type capdStr1;
   sizedStr1 = str1.size ( );
   capdStr1 = str1.capacity ( );

   cout << "The string str1 with downsized capacity is: "
        << str1 << endl;
   cout << "The current size of string str1 is: "
        << sizedStr1 << "." << endl;
   cout << "The reduced capacity of string str1 is: "
        << capdStr1 << "." << endl << endl;
}
The original string str1 is: Hello world
The current size of original string str1 is: 11.
The capacity of original string str1 is: 15.

The string str1with augmented capacity is: Hello world
The current size of string str1 is: 11.
The new capacity of string str1 is: 47.

The string str1 with downsized capacity is: Hello world
The current size of string str1 is: 11.
The reduced capacity of string str1 is: 47.

basic_string::resize

Menentukan ukuran baru untuk string, menambahkan, atau menghapus elemen sesuai kebutuhan.

void resize(
    size_type count,);

void resize(
    size_type count,
    value_type char_value);

Parameter

count
Ukuran baru string.

char_value
Nilai yang ditambahkan diinisialisasi dengan karakter, jika diperlukan lebih banyak elemen.

Keterangan

Jika ukuran yang dihasilkan melebihi jumlah karakter maksimum, formulir akan melemparkan length_error.

Contoh

// basic_string_resize.cpp
// compile with: /EHsc
#include <string>
#include <iostream>

int main( )
{
   using namespace std;
   string  str1 ( "Hello world" );
   cout << "The original string str1 is: " << str1 << endl;

   basic_string <char>::size_type sizeStr1;
   sizeStr1 = str1.size ( );
   basic_string <char>::size_type capStr1;
   capStr1 = str1.capacity ( );

   // Compare size & capacity of the original string
   cout << "The current size of original string str1 is: "
        << sizeStr1 << "." << endl;
   cout << "The capacity of original string str1 is: "
        << capStr1 << "." << endl << endl;

   // Use resize to increase size by 2 elements: exclamations
   str1.resize ( str1.size ( ) + 2 , '!' );
   cout << "The resized string str1 is: " << str1 << endl;

   sizeStr1 = str1.size ( );
   capStr1 = str1.capacity ( );

   // Compare size & capacity of a string after resizing
   cout << "The current size of resized string str1 is: "
        << sizeStr1 << "." << endl;
   cout << "The capacity of resized string str1 is: "
        << capStr1 << "." << endl << endl;

   // Use resize to increase size by 20 elements:
   str1.resize ( str1.size ( ) + 20 );
   cout << "The resized string str1 is: " << str1 << endl;

   sizeStr1 = str1.size ( );
   capStr1 = str1.capacity ( );

   // Compare size & capacity of a string after resizing
   // note capacity increases automatically as required
   cout << "The current size of modified string str1 is: "
        << sizeStr1 << "." << endl;
   cout << "The capacity of modified string str1 is: "
        << capStr1 << "." << endl << endl;

   // Use resize to downsize by 28 elements:
   str1.resize ( str1.size ( ) - 28 );
   cout << "The downsized string str1 is: " << str1 << endl;

   sizeStr1 = str1.size (  );
   capStr1 = str1.capacity (  );

   // Compare size & capacity of a string after downsizing
   cout << "The current size of downsized string str1 is: "
        << sizeStr1 << "." << endl;
   cout << "The capacity of downsized string str1 is: "
        << capStr1 << "." << endl;
}
The original string str1 is: Hello world
The current size of original string str1 is: 11.
The capacity of original string str1 is: 15.

The resized string str1 is: Hello world!!
The current size of resized string str1 is: 13.
The capacity of resized string str1 is: 15.

The resized string str1 is: Hello world!!
The current size of modified string str1 is: 33.
The capacity of modified string str1 is: 47.

The downsized string str1 is: Hello
The current size of downsized string str1 is: 5.
The capacity of downsized string str1 is: 47.

basic_string::reverse_iterator

Jenis yang menyediakan referensi ke elemen yang disimpan dalam string.

typedef std::reverse_iterator<iterator> reverse_iterator;

Keterangan

Jenis reverse_iterator dapat digunakan untuk memodifikasi nilai karakter dan digunakan untuk melakukan iterasi melalui string secara terbalik.

Contoh

Lihat contoh untuk rbegin contoh cara mendeklarasikan dan menggunakan reverse_iterator.

basic_string::rfind

Mencari string ke arah mundur untuk kemunculan pertama substring yang cocok dengan urutan karakter tertentu.

size_type rfind(
    value_type char_value,
    size_type offset = npos) const;

size_type rfind(
    const value_type* ptr,
    size_type offset = npos) const;

size_type rfind(
    const value_type* ptr,
    size_type offset,
    size_type count) const;

size_type rfind(
    const basic_string<CharType, Traits, Allocator>& str,
    size_type offset = npos) const;

Parameter

char_value
Nilai karakter yang fungsi anggotanya akan dicari.

offset
Indeks posisi di mana pencarian akan dimulai.

ptr
String C yang fungsi anggotanya akan dicari.

count
Jumlah karakter, menghitung maju dari karakter pertama, dalam string C yang fungsi anggotanya akan dicari.

str
String yang fungsi anggotanya akan dicari.

Nilai hasil

Indeks kemunculan terakhir, ketika dicari mundur, dari karakter pertama substring ketika berhasil; jika tidak npos.

Contoh

// basic_string_rfind.cpp
// compile with: /EHsc
#include <string>
#include <iostream>

int main( )
{
   using namespace std;

   // The first member function
   // searches for a single character in a string
   string str1 ( "Hello Everyone" );
   cout << "The original string str1 is: " << str1 << endl;
   basic_string <char>::size_type indexCh1a, indexCh1b;
   static const basic_string <char>::size_type npos = -1;

   indexCh1a = str1.rfind ( "e" , 9 );
   if ( indexCh1a != npos )
      cout << "The index of the 1st 'e' found before the 9th"
           << " position in str1 is: " << indexCh1a << endl;
   else
      cout << "The character 'e' was not found in str1 ." << endl;

   indexCh1b = str1.rfind ( "x" );
   if ( indexCh1b != npos )
      cout << "The index of the 'x' found in str1 is: "
           << indexCh1b << endl << endl;
   else
      cout << "The character 'x' was not found in str1."
           << endl << endl;

   // The second member function searches a string
   // for a substring as specified by a C-string
   string str2 ( "Let me make this perfectly clear." );
   cout << "The original string str2 is: " << str2 << endl;
   basic_string <char>::size_type indexCh2a, indexCh2b;

   const char *cstr2 = "perfect";
   indexCh2a = str2.rfind ( cstr2 , 30 );
   if ( indexCh2a != npos )
      cout << "The index of the 1st element of 'perfect' "
           << "before\n the 30th position in str2 is: "
           << indexCh2a << endl;
   else
      cout << "The substring 'perfect' was not found in str2 ."
           << endl;

   const char *cstr2b = "imperfectly";
   indexCh2b = str2.rfind ( cstr2b , 30 );
   if ( indexCh2b != npos )
      cout << "The index of the 1st element of 'imperfect' "
           << "before\n the 5th position in str3 is: "
           << indexCh2b << endl;
   else
      cout << "The substring 'imperfect' was not found in str2 ."
           << endl << endl;

   // The third member function searches a string
   // for a substring as specified by a C-string
   string str3 ( "It is a nice day. I am happy." );
   cout << "The original string str3 is: " << str3 << endl;
   basic_string <char>::size_type indexCh3a, indexCh3b;

   const char *cstr3a = "nice";
   indexCh3a = str3.rfind ( cstr3a );
   if ( indexCh3a != npos )
      cout << "The index of the 1st element of 'nice' "
           << "in str3 is: " << indexCh3a << endl;
   else
      cout << "The substring 'nice' was not found in str3 ."
           << endl;

   const char *cstr3b = "am";
   indexCh3b = str3.rfind ( cstr3b , indexCh3a + 25 , 2 );
   if ( indexCh3b != npos )
      cout << "The index of the next occurrence of 'am' in "
           << "str3 begins at: " << indexCh3b << endl << endl;
   else
      cout << "There is no next occurrence of 'am' in str3 ."
           << endl << endl;

   // The fourth member function searches a string
   // for a substring as specified by a string
   string str4 ( "This perfectly unclear." );
   cout << "The original string str4 is: " << str4 << endl;
   basic_string <char>::size_type indexCh4a, indexCh4b;

   string str4a ( "clear" );
   indexCh4a = str4.rfind ( str4a , 15 );
   if (indexCh4a != npos )
      cout << "The index of the 1st element of 'clear' "
           << "before\n the 15th position in str4 is: "
           << indexCh4a << endl;
   else
      cout << "The substring 'clear' was not found in str4 "
           << "before the 15th position." << endl;

   string str4b ( "clear" );
   indexCh4b = str4.rfind ( str4b );
   if ( indexCh4b != npos )
      cout << "The index of the 1st element of 'clear' "
           << "in str4 is: "
           << indexCh4b << endl;
   else
      cout << "The substring 'clear' was not found in str4 ."
           << endl << endl;
}
The original string str1 is: Hello Everyone
The index of the 1st 'e' found before the 9th position in str1 is: 8
The character 'x' was not found in str1.

The original string str2 is: Let me make this perfectly clear.
The index of the 1st element of 'perfect' before
the 30th position in str2 is: 17
The substring 'imperfect' was not found in str2 .

The original string str3 is: It is a nice day. I am happy.
The index of the 1st element of 'nice' in str3 is: 8
The index of the next occurrence of 'am' in str3 begins at: 20

The original string str4 is: This perfectly unclear.
The substring 'clear' was not found in str4 before the 15th position.
The index of the 1st element of 'clear' in str4 is: 17

basic_string::shrink_to_fit

Membuang kelebihan kapasitas string.

void shrink_to_fit();

Keterangan

Fungsi anggota ini menghilangkan penyimpanan yang tidak perlu dalam kontainer.

basic_string::size

Mengembalikan jumlah elemen saat ini dalam string.

size_type size() const;

Nilai hasil

Panjang string.

Contoh

// basic_string_size.cpp
// compile with: /EHsc
#include <string>
#include <iostream>

int main( )
{
   using namespace std;
   string str1 ("Hello world");
   cout << "The original string str1 is: " << str1 << endl;

   // The size and length member functions differ in name only
   basic_string <char>::size_type sizeStr1, lenStr1;
   sizeStr1 = str1.size (  );
   lenStr1 = str1.length (  );

   basic_string <char>::size_type capStr1, max_sizeStr1;
   capStr1 = str1.capacity (  );
   max_sizeStr1 = str1.max_size (  );

   // Compare size, length, capacity & max_size of a string
   cout << "The current size of original string str1 is: "
        << sizeStr1 << "." << endl;
   cout << "The current length of original string str1 is: "
        << lenStr1 << "." << endl;
   cout << "The capacity of original string str1 is: "
        << capStr1 << "." << endl;
   cout << "The max_size of original string str1 is: "
        << max_sizeStr1 << "." << endl << endl;

   str1.erase ( 6, 5 );
   cout << "The modified string str1 is: " << str1 << endl;

   sizeStr1 = str1.size ( );
   lenStr1 = str1.length ( );
   capStr1 = str1.capacity ( );
   max_sizeStr1 = str1.max_size ( );

   // Compare size, length, capacity & max_size of a string
   // after erasing part of the original string
   cout << "The current size of modified string str1 is: "
        << sizeStr1 << "." << endl;
   cout << "The current length of modified string str1 is: "
        << lenStr1 << "." << endl;
   cout << "The capacity of modified string str1 is: "
        << capStr1 << "." << endl;
   cout << "The max_size of modified string str1 is: "
        << max_sizeStr1 << "." << endl;
}

basic_string::size_type

Jenis bilangan bulat yang tidak ditandatangani yang dapat mewakili jumlah elemen dan indeks dalam string.

typedef typename allocator_type::size_type size_type;

Keterangan

setara dengan allocator_type::size_type.

Untuk jenis string, setara dengan size_t.

Contoh

// basic_string_size_type.cpp
// compile with: /EHsc
#include <string>
#include <iostream>

int main( )
{
   using namespace std;
   string str1 ( "Hello world" );

   basic_string <char>::size_type sizeStr1, capStr1;
   sizeStr1 = str1.size (  );
   capStr1 = str1.capacity (  );

   cout << "The current size of string str1 is: "
        << sizeStr1 << "." << endl;
   cout << "The capacity of string str1 is: " << capStr1
         << "." << endl;
}
The current size of string str1 is: 11.
The capacity of string str1 is: 15.

basic_string::starts_with

Periksa apakah string dimulai dengan awalan yang ditentukan.

bool starts_with(const CharType c) const noexcept;
bool starts_with(const CharType* const x) const noexcept;
bool starts_with(const basic_string_view sv) const noexcept;

Parameter

c
Awalan karakter tunggal yang akan dicari.

sv
Tampilan string yang berisi awalan untuk dicari.
Anda dapat meneruskan std::basic_string, yang mengonversi ke tampilan string.

x
String karakter null-terminated yang berisi awalan yang akan dicari.

Nilai hasil

true jika string dimulai dengan awalan yang ditentukan; false Sebaliknya.

Keterangan

starts_with() baru di C++20. Untuk menggunakannya, tentukan opsi pengkompilasi atau yang /std:c++20 lebih baru.

Lihat ends_with untuk melihat apakah string diakhiri dengan akhiran yang ditentukan.

Contoh

// Requires /std:c++20 or /std:c++latest
#include <string>
#include <iostream>

int main()
{
    std::basic_string<char> str = "abcdefg";

    std::cout << std::boolalpha; // so booleans show as 'true'/'false'
    std::cout << str.starts_with('b') << '\n';
    std::cout << str.starts_with("aBc") << '\n';

    std::basic_string<char> str2 = "abc";
    std::cout << str.starts_with(str2);

    return 0;
}
false
false
true

basic_string::substr

Menyalin substring paling banyak beberapa karakter dari string yang dimulai dari posisi tertentu.

basic_string<CharType, Traits, Allocator> substr(
    size_type offset = 0,
    size_type count = npos) const;

Parameter

offset
Indeks yang menemukan elemen pada posisi dari mana salinan string dibuat, dengan nilai default 0.

count
Jumlah karakter yang akan disalin jika ada.

Nilai hasil

Objek substring yang merupakan salinan elemen operand string, dimulai pada posisi yang ditentukan oleh argumen pertama.

Contoh

// basic_string_substr.cpp
// compile with: /EHsc
#include <string>
#include <iostream>

int main( )
{
   using namespace std;

   string  str1 ("Heterological paradoxes are persistent.");
   cout << "The original string str1 is: \n " << str1
        << endl << endl;

   basic_string <char> str2 = str1.substr ( 6 , 7 );
   cout << "The substring str1 copied is: " << str2
        << endl << endl;

   basic_string <char> str3 = str1.substr (  );
   cout << "The default substring str3 is: \n " << str3
        <<  "\n which is the entire original string." << endl;
}
The original string str1 is:
Heterological paradoxes are persistent.

The substring str1 copied is: logical

The default substring str3 is:
Heterological paradoxes are persistent.
which is the entire original string.

basic_string::swap

Tukarkan konten dua string.

void swap(
    basic_string<CharType, Traits, Allocator>& str);

Parameter

str
String sumber yang elemennya akan ditukar dengan yang ada di string tujuan.

Keterangan

Jika string yang ditukar memiliki objek alokator yang sama, swap fungsi anggota:

  • Terjadi dalam waktu konstan.
  • Tidak ada pengecualian.
  • Membatalkan tidak ada referensi, pointer, atau iterator yang menunjuk elemen dalam dua string.

Jika tidak, itu membuat penugasan elemen dan panggilan konstruktor sebanding dengan jumlah elemen dalam dua urutan yang dikontrol.

Contoh

// basic_string_swap.cpp
// compile with: /EHsc
#include <string>
#include <iostream>

int main( )
{
   using namespace std;

   // Declaring an objects of type basic_string<char>
   string s1 ( "Tweedledee" );
   string s2 ( "Tweedledum" );
   cout << "Before swapping string s1 and s2:" << endl;
   cout << " The basic_string s1 = " << s1 << "." << endl;
   cout << " The basic_string s2 = " << s2 << "." << endl;

   s1.swap ( s2 );
   cout << "After swapping string s1 and s2:" << endl;
   cout << " The basic_string s1 = " << s1 << "." << endl;
   cout << " The basic_string s2 = " << s2 << "." << endl;
}
Before swapping string s1 and s2:
The basic_string s1 = Tweedledee.
The basic_string s2 = Tweedledum.
After swapping string s1 and s2:
The basic_string s1 = Tweedledum.
The basic_string s2 = Tweedledee.

basic_string::traits_type

Jenis untuk sifat karakter elemen yang disimpan dalam string.

typedef Traits traits_type;

Keterangan

Jenisnya adalah sinonim untuk parameter Traitstemplat kedua .

Untuk jenis string, setara dengan char_traits<char>.

Contoh

Lihat contoh untuk copy contoh cara mendeklarasikan dan menggunakan traits_type.

basic_string::value_type

Jenis yang mewakili jenis karakter yang disimpan dalam string.

typedef typename allocator_type::value_type value_type;

Keterangan

Ini setara dengan traits_type::char_type dan setara dengan char untuk objek jenis string.

Contoh

// basic_string_value_type.cpp
// compile with: /EHsc
#include <string>
#include <iostream>

int main( )
{
   using namespace std;

   basic_string<char>::value_type ch1 = 'G';

   char ch2 = 'H';

   cout << "The character ch1 is: " << ch1 << "." << endl;
   cout << "The character ch2 is: " << ch2 << "." << endl;
}
The character ch1 is: G.
The character ch2 is: H.

Baca juga

<string>
Keamanan utas di pustaka standar C++