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
, , wstring
untuk 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_with C++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_with C++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. |
Operator
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 Allocator
templat .
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 assign
anggota , 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 cbegin
pengembalian , 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
, begin
end
, 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 size
dengan .
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 assign
anggota , 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 Traits
templat 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.