basic_string
Sınıf
Türündeki basic_string
bir nesne tarafından denetlenen diziler Standart C++ dize sınıfıdır ve dize olarak adlandırılır, ancak C++ Standart Kitaplığı'nın tamamında kullanılan null sonlandırılan C stili dizelerle karıştırılmamalıdır. Standart C++ dizesi, dizelerin karşılaştırma ve birleştirme işlemleri, yineleyiciler, C++ Standart Kitaplık algoritmaları ve sınıf ayırıcı tarafından yönetilen bellekle kopyalanıp atanması gibi normal türler olarak kullanılmasını sağlayan bir kapsayıcıdır. Standart C++ dizesini null olarak sonlandırılan C stili bir dizeye dönüştürmeniz gerekiyorsa, üyeyi basic_string::c_str
kullanın.
Sözdizimi
template <class CharType, class Traits = char_traits<CharType>, class Allocator = allocator<CharType>>
class basic_string;
Parametreler
CharType
Dizede depolanacak tek bir karakterin veri türü. C++ Standart Kitaplığı, bu sınıf şablonunun, için , wstring
u16string
wchar_t
, için char16_t
ve u32string
char32_t
için türündeki öğelerin tür char
tanımlarıyla string
birlikte uzmanlıklar sağlar.
Traits
basic_string özelleştirmesindeki öğelerin çeşitli önemli özellikleri CharType
sınıfı Traits
tarafından açıklanır. Varsayılan değer şudur: char_traits
<CharType
>.
Allocator
Dizenin bellek ayırması ve serbest bırakılması hakkındaki ayrıntıları kapsülleyen depolanmış ayırıcı nesnesini temsil eden tür. Varsayılan değer şudur: allocator<CharType>
.
Oluşturucular
Oluşturucu | Açıklama |
---|---|
basic_string |
Boş veya belirli karakterler tarafından başlatılan ya da başka bir dize nesnesinin veya C dizesinin tümünün veya bir bölümünün kopyası olan bir dize oluşturur. |
Tür tanımları
Tür adı | Açıklama |
---|---|
allocator_type |
Dize nesnesinin sınıfını allocator temsil eden bir tür. |
const_iterator |
Dizedeki bir öğeye erişebilen ve okuyabilen rastgele erişim yineleyicisi sağlayan bir const tür. |
const_pointer |
Dizedeki bir const öğeye işaretçi sağlayan tür. |
const_reference |
Okuma ve işlem gerçekleştirme const için dizede depolanan bir const öğeye başvuru sağlayan bir tür. |
const_reverse_iterator |
Dizedeki herhangi const bir öğeyi okuyabilen rastgele erişim yineleyicisi sağlayan bir tür. |
difference_type |
Aynı dizedeki öğelere başvuran iki yineleyici arasındaki farkı sağlayan bir tür. |
iterator |
Dizedeki herhangi bir öğeyi okuyabilen veya değiştirebilen rastgele erişim yineleyicisi sağlayan bir tür. |
npos |
Bir arama işlevi başarısız olduğunda "bulunamadı" veya "kalan tüm karakterler" belirten -1 olarak başlatılan imzasız tamsayı değeri. |
pointer |
Dize veya karakter dizisindeki bir karakter öğesine işaretçi sağlayan bir tür. |
reference |
Dizede depolanan bir öğeye başvuru sağlayan bir tür. |
reverse_iterator |
Ters çevrilmiş dizedeki bir öğeyi okuyabilen veya değiştirebilen rastgele erişim yineleyicisi sağlayan bir tür. |
size_type |
Bir dizedeki öğe sayısı için imzasız bir tamsayı türü. |
traits_type |
Bir dizede depolanan öğelerin karakter özellikleri için bir tür. |
value_type |
Bir dizede depolanan karakterlerin türünü temsil eden bir tür. |
Üye işlevleri
Üye işlevi | Açıklama |
---|---|
append |
Dizenin sonuna karakter ekler. |
assign |
Bir dizenin içeriğine yeni karakter değerleri atar. |
at |
Dizede belirtilen bir konumdaki öğesine başvuru döndürür. |
back |
|
begin |
Dizedeki ilk öğeyi ele alan bir yineleyici döndürür. |
c_str |
Bir dizenin içeriğini C stili, null ile sonlandırılan dize olarak dönüştürür. |
capacity |
Dizenin bellek ayırmasını artırmadan dizede depolanabilecek en fazla öğe sayısını döndürür. |
cbegin |
Dizedeki ilk öğeyi ele alan bir sabit yineleyici döndürür. |
cend |
Dizedeki son öğenin başarılı olduğu konumu ele alan bir sabit yineleyici döndürür. |
clear |
Bir dizenin tüm öğelerini siler. |
compare |
İki dizenin eşit olup olmadığını veya birinin sözcüksel olarak diğerinden küçük olup olmadığını belirlemek için bir dizeyi belirtilen dizeyle karşılaştırır. |
copy |
Bir kaynak dizedeki dizinlenmiş konumdan en fazla belirtilen sayıda karakteri hedef karakter dizisine kopyalar. Kullanımdan kaldırıldı. Bunun yerine basic_string::_Copy_s kullanın. |
crbegin |
Ters çevrilmiş dizedeki ilk öğeyi ele alan bir sabit yineleyici döndürür. |
crend |
Ters çevrilmiş bir dizedeki son öğenin başarılı olduğu konumu ele alan bir sabit yineleyici döndürür. |
_Copy_s |
Microsoft'a Özgü: Kaynak dizedeki dizinlenmiş konumdan en fazla belirtilen sayıda karakteri hedef karakter dizisine kopyalar. |
data |
Bir dizenin içeriğini bir karakter dizisine dönüştürür. |
empty |
Dizenin karakter içerip içermediğini sınar. |
end |
Dizedeki son öğeden sonra gelen konumu ele alan bir yineleyici döndürür. |
ends_with C++20 |
Dizenin belirtilen sonekle bitip bitmediğini denetler. |
erase |
Bir dizedeki bir öğeyi veya öğe aralığını belirtilen konumdan kaldırır. |
find |
Bir dizeyi, belirtilen karakter dizisiyle eşleşen bir alt dizenin ilk oluşumu için ileri yönde arar. |
find_first_not_of |
Belirtilen dizenin herhangi bir öğesi olmayan ilk karakter için bir dizede arama yapma. |
find_first_of |
Belirtilen dizenin herhangi bir öğesiyle eşleşen ilk karakter için bir dizede arar. |
find_last_not_of |
Belirtilen dizenin herhangi bir öğesi olmayan son karakter için bir dizede arama yapma. |
find_last_of |
Belirtilen dizenin öğesi olan son karakter için bir dizede arama yapılır. |
front |
Dizedeki ilk öğeye başvuru döndürür. |
get_allocator |
Dizeyi allocator oluşturmak için kullanılan nesnenin bir kopyasını döndürür. |
insert |
Belirtilen konumda dizeye bir öğe, birkaç öğe veya öğe aralığı ekler. |
length |
Bir dizedeki geçerli öğe sayısını döndürür. |
max_size |
Bir dizenin içerebileceği en fazla karakter sayısını döndürür. |
pop_back |
Dizenin son öğesini siler. |
push_back |
Dizenin sonuna bir öğe ekler. |
rbegin |
Ters çevrilmiş dizedeki ilk öğeye bir yineleyici döndürür. |
rend |
Ters çevrilmiş dizedeki son öğenin hemen ötesine işaret eden bir yineleyici döndürür. |
replace |
Belirtilen konumdaki bir dizedeki öğeleri, diğer aralıklardan, dizelerden veya C dizelerinden kopyalanan belirtilen karakterlerle veya karakterlerle değiştirir. |
reserve |
Dizenin kapasitesini en az belirtilen bir sayı kadar büyük bir sayıya ayarlar. |
resize |
Bir dize için, öğeleri gerektiği gibi ekleyerek veya silip ekleyerek yeni bir boyut belirtir. |
rfind |
Bir dizeyi, belirtilen karakter dizisiyle eşleşen bir alt dizenin ilk oluşumu için geriye doğru arar. |
shrink_to_fit |
Dizenin fazla kapasitesini atar. |
size |
Bir dizedeki geçerli öğe sayısını döndürür. |
starts_with C++20 |
Dizenin belirtilen ön ek ile başlayıp başlamadığını denetler. |
substr |
Belirtilen konumdan başlayarak bir dizeden en fazla bazı karakter sayısının alt dizesini kopyalar. |
swap |
İki dizenin içeriğini değiştirme. |
İşleçler
Operator | Açıklama |
---|---|
operator+= |
Dizeye karakter ekler. |
operator= |
Bir dizenin içeriğine yeni karakter değerleri atar. |
operator[] |
Dizede belirtilen dizine sahip karaktere başvuru sağlar. |
Değişmez Değerler
Tanımlayan basic_string
üst bilgiler, giriş parametrelerinden belirtilen türde bir dize oluşturan aşağıdaki kullanıcı tanımlı değişmez değerleri de tanımlar.
Bildirim | Açıklama |
---|---|
inline string operator"" s(const char* str, size_t len) |
Dönüşler: string(str, len) |
inline string operator"" s(const wchar_t* str, size_t len) |
Dönüşler: wstring(str, len) |
inline basic_string<char8_t> operator"" s(const char8_t* str, size_t len) |
Dönüşler: basic_string<char8_t>(str, len) |
inline u16string operator"" s(const char16_t* str, size_t len) |
Dönüşler: u16string(str, len) |
inline u32string operator"" s(const char32_t* str, size_t len) |
Dönüşler: u32string(str, len) |
Açıklamalar
Bir işlevden öğelerden daha max_size
uzun bir dizi oluşturması istenirse, işlevi türünde length_error
bir nesne oluşturarak bir uzunluk hatası bildirir.
Denetlenen dizinin öğelerini belirten başvurular, işaretçiler ve yineleyiciler, denetimli diziyi değiştiren bir işleve yapılan herhangi bir çağrıdan sonra veya üye olmayanconst
bir işleve yapılan ilk çağrıdan sonra geçersiz hale gelebilir.
Gereksinimler
Üst bilgi:<dize>
Ad alanı: std
basic_string::allocator_type
Bir dize nesnesi için ayırıcı sınıfını temsil eden bir tür.
typedef Allocator allocator_type;
Açıklamalar
türü, şablon parametresi Allocator
için bir eş anlamlıdır.
Örnek
// 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
Dizenin sonuna karakter ekler.
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);
Parametreler
ptr
Eklenecek C dizesi.
str
Karakterleri eklenecek dize.
offset
Kaynak dizenin eklenecek karakterleri sağlayan bölümünün dizini.
count
En çok kaynak dizeden eklenecek karakter sayısı.
char_value
Eklenecek karakter değeri.
first
Eklenecek aralıktaki ilk öğeyi ele alan bir giriş yineleyicisi.
last
Bir giriş yineleyicisi veya const_pointer
const_iterator
eklenecek aralıktaki son öğenin ötesindeki konumuna hitap eder.
Dönüş değeri
Üye işlevi tarafından geçirilen karakterlerle eklenen dize nesnesine başvuru.
Açıklamalar
Karakterler, veya üye işlevleri append
veya push_back
kullanılarak operator+=
bir dizeye eklenebilir. operator+=
tek bağımsız değişkenli değerleri eklerken, çok bağımsız değişkenli append
üye işlevi bir dizenin belirli bir bölümünün eklenmesine izin verir.
Örnek
// 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
Bir dizenin içeriğine yeni karakter değerleri atar.
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);
Parametreler
ptr
Hedef dizeye atanacak C dizesinin karakterlerine işaret eden bir işaretçi.
count
Kaynak dizeden atanacak karakter sayısı.
str
Karakterleri hedef dizeye atanacak kaynak dize.
char_value
Atanacak karakter değeri.
first
Hedef aralığa atanacak kaynak dizenin aralığındaki ilk karakteri ele alan bir giriş yineleyicisi, const_pointer veya const_iterator.
last
Giriş yineleyicisi, const_pointer veya const_iterator hedef aralığa atanacak kaynak dize aralığındaki son karakteri aşan karakteri ele alır.
off
Yeni karakterlerin atanmaya başlayacağı konum.
Dönüş değeri
Üye işlevi tarafından yeni karakterler atanmakta olan dize nesnesine başvuru.
Açıklamalar
Dizelere yeni karakter değerleri atanabilir. Yeni değer bir dize ve C dizesi veya tek bir karakter olabilir. operator=
Yeni değer tek bir parametreyle açıklanabilirse kullanılabilir; aksi takdirde, dizenin hangi bölümünün hedef dizeye atanacağını belirtmek için birden çok parametresi olan üye işlevi assign
kullanılabilir.
Örnek
// 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
Dizede belirtilen dizine sahip karaktere başvuru sağlar.
const_reference at(size_type offset) const;
reference at(size_type offset);
Parametreler
offset
Başvurulacak öğenin konumunun dizini.
Dönüş değeri
Parametre dizini tarafından belirtilen konumdaki dizenin karakterine başvuru.
Açıklamalar
Dizenin ilk öğesi sıfırdan oluşan bir dizine sahiptir ve aşağıdaki öğeler pozitif tamsayılar tarafından art arda dizinlenir, böylece n uzunluk dizesi n - 1 sayısıyla dizine alınan n. öğeye sahiptir.
Üye operator[]
, bir dizenin öğelerine okuma ve yazma erişimi sağlamak için üye işlevinden at
daha hızlıdır.
Üye operator[]
, parametre olarak geçirilen dizinin geçerli olup olmadığını denetlemez, ancak üye işlevi at
geçerlidir ve bu nedenle geçerlilik kesin değilse kullanılmalıdır. Üye işlevine at
geçirilen, sıfırdan küçük veya dizenin boyutundan büyük veya buna eşit bir dizin olan geçersiz dizin bir out_of_range
Sınıf özel durumu oluşturur. Tanımsız davranışla sonuçlanan geçersiz bir dizin operator[]
, ancak dizenin uzunluğuna eşit dizin, const dizeleri için geçerli bir dizindir ve işleç bu dizin geçirildiğinde null karakterini döndürür.
Döndürülen başvuru, dize olmayanlar içinconst
dize yeniden yüklemeleri veya değişiklikler tarafından geçersiz kılınabilir.
Örnek
// 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
Dizedeki son öğeye başvuru döndürür.
const_reference back() const;
reference back();
Dönüş değeri
Dizenin boş olmayan son öğesine başvuru.
Açıklamalar
basic_string::basic_string
Boş, belirli karakterlerle başlatılan veya başka bir dize nesnesinin veya C stilinin (null-sonlandırılan) dizesinin tümünün veya bir bölümünün kopyası olan bir dize oluşturur.
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);
Parametreler
ptr
Oluşturulmakta olan karakterleri başlatmak string
için kullanılacak olan C dizesi. Sıfır olmadığı sürece count
bu değer null işaretçi olamaz.
alloc_type
Oluşturmakta olan dize nesnesi için depolama ayırıcı sınıfı.
count
Başlatılacak karakter sayısı.
right
Oluşturmakta olan dizeyi başlatmak için dize.
right_offset
Oluşturulmakta olan dize için karakter değerlerini başlatmak için ilk kullanılan dizedeki bir karakterin dizini.
char_value
Oluşturulmakta olan dizeye kopyalanacak karakter değeri.
first
Eklenecek kaynak aralıktaki ilk öğeyi ele alan bir giriş yineleyicisi, const_pointer veya const_iterator.
last
Eklenecek kaynak aralıktaki son öğenin ötesindeki öğenin konumunu ele alan bir giriş yineleyicisi, const_pointer veya const_iterator.
Dönüş değeri
Oluşturucular tarafından oluşturmakta olan dize nesnesine başvuru.
Açıklamalar
Tüm oluşturucular bir basic_string::allocator_type
depolar ve denetlenen diziyi başlatır. Ayırıcı nesnesi varsa bağımsız değişkenidir al
. Kopya oluşturucusunun çağrısıdırright.get_allocator()
basic_string::get_allocator
. Aksi takdirde ayırıcı olur Alloc()
.
Denetlenen sıra, kalan işlenenler tarafından belirtilen işlenen dizisinin bir kopyasına başlatılır. İşlenen dizisi olmayan bir oluşturucu, boş bir ilk denetimli dizi belirtir. Şablon oluşturucusunda bir tamsayı türüyse InputIterator
, işlenen dizisi first, last
ile (size_type) first, (value_type) last
aynı şekilde davranır.
Örnek
// 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
Dizedeki ilk öğeyi ele alan bir yineleyici döndürür.
const_iterator begin() const;
iterator begin();
Dönüş değeri
Dizinin ilk öğesini veya boş bir dizinin sonunun hemen ötesinde ele alan rastgele erişim yineleyicisi.
Örnek
// 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
Bir dizenin içeriğini C stili, null ile sonlandırılan bir dize olarak dönüştürür.
const value_type *c_str() const;
Dönüş değeri
Çağırma dizesinin C stili sürümünün işaretçisi. nesnesindeki sınıfında yok edici basic_string
de dahil olmak üzere işlev olmayanconst
bir işlev çağrıldıktan sonra işaretçi değeri geçerli değildir.
Açıklamalar
Sınıf şablonuna basic_string<char>
ait dize türündeki nesneler null olarak sonlandırılmamış olabilir. Null karakter '\0'
, dizenin sonunu işaretlemek için bir C dizesinde özel karakter olarak kullanılır, ancak dize türünde bir nesnede özel bir anlamı yoktur ve diğer karakterler gibi dizenin bir parçası olabilir. 'den const char *
dizelere otomatik dönüştürme vardır, ancak dize sınıfı C stili dizelerden türündeki basic_string<char>
nesnelere otomatik dönüştürme sağlamaz.
Döndürülen C stili dize değiştirilmemelidir; bu, dizenin sınırlı bir ömrü olduğundan ve sınıf dizesine sahip olduğundan, dize işaretçisini geçersiz kılabilir veya silinmelidir.
Örnek
// 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
Dizenin bellek ayırmasını artırmadan dizede depolanabilecek en fazla öğe sayısını döndürür.
size_type capacity() const;
Dönüş değeri
Dizeyi tutmak için bellekte ayrılan depolama alanı boyutu.
Açıklamalar
Üye işlevi, denetlenen sırayı tutmak için ayrılmış olan depolama alanını döndürür ve en az olarak kadar size
büyük bir değer döndürür.
Örnek
// 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
Aralıktaki ilk öğeyi ele alan bir const
yineleyici döndürür.
const_iterator cbegin() const;
Dönüş değeri
Aralığın const
ilk öğesini veya boş aralığın sonunun hemen ötesindeki konumu işaret eden rastgele erişim yineleyicisi (boş aralık için). cbegin() == cend()
Açıklamalar
değerinin cbegin
dönüş değeriyle, aralıktaki öğeler değiştirilemez.
Dönüş değerinin olduğunu const_iterator
garanti etmek için üye işlevinin begin()
yerine bu üye işlevini kullanabilirsiniz. Genellikle, aşağıdaki örnekte gösterildiği gibi tür kesinti anahtar sözcüğüyle auto
birlikte kullanılır. Örnekte, ve cbegin()
destekleyen herhangi bir türde begin()
değiştirilebilir (olmayanconst
) bir kapsayıcı olduğunu düşününContainer
.
auto i1 = Container.begin();
// i1 is Container<T>::iterator
auto i2 = Container.cbegin();
// i2 is Container<T>::const_iterator
basic_string::cend
Bir const
aralıktaki son öğenin hemen ötesindeki konumu ele alan bir yineleyici döndürür.
const_iterator cend() const;
Dönüş değeri
const
Aralığın sonunun hemen ötesine işaret eden rastgele erişim yineleyicisi.
Açıklamalar
cend
bir yineleyicinin aralığının sonunu geçip geçmediğini test etmek için kullanılır.
Dönüş değerinin olduğunu const_iterator
garanti etmek için üye işlevinin end()
yerine bu üye işlevini kullanabilirsiniz. Genellikle, aşağıdaki örnekte gösterildiği gibi tür kesinti anahtar sözcüğüyle auto
birlikte kullanılır. Örnekte, ve cend()
destekleyen herhangi bir türde end()
değiştirilebilir (olmayanconst
) bir kapsayıcı olduğunu düşününContainer
.
auto i1 = Container.end();
// i1 is Container<T>::iterator
auto i2 = Container.cend();
// i2 is Container<T>::const_iterator
tarafından cend
döndürülen değer başvurulmamalıdır.
basic_string::clear
Bir dizenin tüm öğelerini siler.
void clear();
Açıklamalar
Üye işlevinin çağrıldığı dize boş olacaktır.
Örnek
// 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
belirtilen dizeyle büyük/küçük harfe duyarlı bir karşılaştırma yapar ve iki dizenin eşit olup olmadığını veya birinin sözcüksel olarak diğerinden küçük olup olmadığını belirler.
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;
Parametreler
str
İşlenen dizeyle karşılaştırılacak dize.
position_1
Karşılaştırmanın başladığı işlenen dizenin dizini.
number_1
İşlenen dizeden karşılaştırılacak en fazla karakter sayısı.
number_2
Parametre dizesinden karşılaştırılacak en fazla karakter sayısı.
offset
Karşılaştırmanın başladığı parametre dizesinin dizini.
count
Parametre dizesinden karşılaştırılacak en fazla karakter sayısı.
ptr
İşlenen dizeyle karşılaştırılacak C dizesi.
Dönüş değeri
İşlenen dize parametre dizesinden küçükse negatif bir değer; iki dize eşitse sıfır; veya işlenen dize parametre dizesinden büyükse pozitif bir değer.
Açıklamalar
Üye compare
işlevleri, hangisinde kullanıldığına bağlı olarak parametre ve işlenen dizelerinin tümünü veya bir bölümünü karşılaştırır.
Karşılaştırma büyük/küçük harfe duyarlıdır.
Örnek
// 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
Dizedeki bir öğeye erişebilen ve okuyabilen rastgele erişim yineleyicisi sağlayan bir const
tür.
typedef implementation-defined const_iterator;
Açıklamalar
const_iterator
Tür, bir karakterin değerini değiştirmek için kullanılamaz ve bir dizeyi ileri yönde yinelemek için kullanılır.
Örnek
bildirme ve kullanma const_iterator
örneği için begin
örneğine bakın.
basic_string::const_pointer
Dizedeki bir const
öğeye işaretçi sağlayan tür.
typedef typename allocator_type::const_pointer const_pointer;
Açıklamalar
türü, için allocator_type::const_pointer
bir eş anlamlıdır.
türü string
için, ile eşdeğerdir char*
.
Const olarak bildirilen işaretçiler bildirildiğinde başlatılmalıdır. Sabit işaretçiler her zaman aynı bellek konumunu gösterir ve sabit veya sabit olmayan verileri işaret edebilir.
Örnek
// 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
Okuma ve işlem gerçekleştirme const
için dizede depolanan bir const
öğeye başvuru sağlayan bir tür.
typedef typename allocator_type::const_reference const_reference;
Açıklamalar
Bir öğenin değerini değiştirmek için bir tür const_reference
kullanılamaz.
türü, için allocator_type::const_reference
bir eş anlamlıdır. türü string
için, const char&
ile eşdeğerdir.
Örnek
bildirme ve kullanma const_reference
örneği için at
örneğine bakın.
basic_string::const_reverse_iterator
Dizedeki herhangi const
bir öğeyi okuyabilen rastgele erişim yineleyicisi sağlayan bir tür.
typedef std::reverse_iterator<const_iterator> const_reverse_iterator;
Açıklamalar
Bir tür const_reverse_iterator
bir karakterin değerini değiştiremez ve bir dizeyi tersten yinelemek için kullanılır.
Örnek
bildirme ve kullanma const_reverse_iterator
örneği için rbegin
örneğine bakın.
basic_string::copy
Bir kaynak dizedeki dizinlenmiş konumdan en fazla belirtilen sayıda karakteri hedef karakter dizisine kopyalar.
Geçirilen değerlerin doğru olup olmadığını denetlemek için çağıranı kullanan bu yöntem güvenli olmayabilir. Bunun yerine kullanmayı basic_string::_Copy_s
göz önünde bulundurun.
size_type copy(
value_type* ptr,
size_type count,
size_type offset = 0) const;
Parametreler
ptr
Öğelerin kopyalandığı hedef karakter dizisi.
count
Kaynak dizeden en fazla kopyalanacak karakter sayısı.
offset
Kaynak dizede kopyaların oluşturulacağı başlangıç konumu.
Dönüş değeri
Kopyalanan karakter sayısı.
Açıklamalar
Null karakter, kopyanın sonuna eklenmez.
Örnek
// 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
Ters çevrilmiş dizedeki ilk öğeyi ele alan bir sabit yineleyici döndürür.
const_reverse_iterator crbegin() const;
Dönüş değeri
Dizenin sonunun hemen ötesine işaret eden ters yineleyici. konumu ters dizenin başlangıcını gösterir.
basic_string::crend
Ters çevrilmiş dizedeki const
son öğeden sonra gelen konumu ele alan bir yineleyici döndürür.
const_reverse_iterator crend() const;
Dönüş değeri
Ters const
çevrilmiş dizedeki son öğeyi (ters çevrilmeyen dizedeki ilk öğeden önce gelen konum) başarılı olan konumu ele alan ters yineleyici.
Açıklamalar
basic_string::_Copy_s
Bir kaynak dizedeki dizinlenmiş konumdan en fazla belirtilen sayıda karakteri hedef karakter dizisine kopyalar.
size_type _Copy_s(
value_type* dest,
size_type dest_size,
size_type count,
size_type offset = 0) const;
Parametreler
dest
Öğelerin kopyalandığı hedef karakter dizisi.
dest_size
Dest boyutu.
count
Kaynak dizeden en fazla kopyalanacak karakter sayısı.
offset
Kaynak dizede kopyaların oluşturulacağı başlangıç konumu.
Dönüş değeri
Kopyalanan karakter sayısı.
Açıklamalar
Null karakter, kopyanın sonuna eklenmez. Bu işlev Microsoft'a özgüdür.
Örnek
// 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
Bir dizenin içeriğini null olarak sonlandırılan karakter dizisine dönüştürür.
const value_type *data() const noexcept;
value_type *data() noexcept;
Dönüş değeri
Dizenin içeriğini içeren null ile sonlandırılan dizinin ilk öğesinin işaretçisi. Boş bir dize için işaretçi, öğesine eşit tek bir null karakteri gösterir value_type()
.
Açıklamalar
Geçerli bir aralıktaki [data(), data() + size()]
noktalar tarafından data
döndürülen işaretçi. Aralıktaki her öğe dizedeki geçerli verilere karşılık gelir. Diğer bir ifadeyle, aralığındaki data() + n == addressof(operator[](n))
her geçerli uzaklık n
için .
aşırı yüklemesi data
tarafından const
döndürülen dizenin içeriğini değiştirirseniz, davranış tanımlanmamış olur. Terminal null karakteri başka bir değere değiştirilirse tanımsız davranış da alırsınız. Dizeye olmayan birconst
başvuru standart kitaplık işlevine geçirilirse, döndürülen işaretçi geçersiz kılınabilir. Üye olmayanconst
bir işleve yapılan çağrıyla da geçersiz kılınabilir. , , , back
begin
, , end
, front
, rbegin
, ve rend
operator[]
üyelerine at
yapılan çağrılar işaretçiyi geçersiz kılmaz.
C++11'den önce döndürülen data
dizenin null olarak sonlandırıldığını garanti etmedi. C++11 data
ve c_str
her ikisi de null olarak sonlandırılan bir dize döndüreceğinden ve etkili bir şekilde aynı olduğundan.
Aşırı yüklenmeyenconst
C++17 sürümünde yenidir. Bunu kullanmak için veya sonraki derleyici seçeneğini belirtin /std:c++17
.
Örnek
// 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
Aynı dizedeki öğelere başvuran iki yineleyici arasındaki farkı sağlayan bir tür.
typedef typename allocator_type::difference_type difference_type;
Açıklamalar
İmzalı tamsayı türü, denetlenen dizideki iki öğeden herhangi birinin adresleri arasındaki farkı temsil eden bir nesneyi açıklar.
türü string
için, ile eşdeğerdir ptrdiff_t
.
Örnek
// 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
Dizenin karakter içerip içermediğini sınar.
bool empty() const;
Dönüş değeri
true
dize nesnesi karakter içermiyorsa; false
en az bir karakter varsa.
Açıklamalar
Üye işlevi == 0 ile size
eşdeğerdir.
Örnek
// 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
Dizedeki son öğeden sonra gelen konumu ele alan bir yineleyici döndürür.
const_iterator end() const;
iterator end();
Dönüş değeri
Dizedeki son öğeden sonra gelen konumu ele alan rastgele erişim yineleyicisi döndürür.
Açıklamalar
end
genellikle bir yineleyicinin dizesinin sonuna ulaşıp ulaşmadığını test etmek için kullanılır. tarafından end
döndürülen değer başvurulmamalıdır.
değerinin dönüş değeri end
bir const_iterator
öğesine atanmışsa dize nesnesi değiştirilemez. dönüş değeri end
bir iterator
öğesine atanmışsa, dize nesnesi değiştirilebilir.
Örnek
// 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
Dizenin belirtilen sonekle bitip bitmediğini denetleyin.
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;
Parametreler
c
Aranacak tek karakterli sonek.
sv
Aranacak son eki içeren bir dize görünümü.
dize görünümüne dönüştüren bir geçirebilirsiniz std::basic_string
.
x
Aranacak son eki içeren null sonlandırılmış karakter dizesi.
Dönüş değeri
true
dize belirtilen sonek ile biterse; false
yoksa.
Açıklamalar
ends_with()
C++20 sürümünde yenidir. Bunu kullanmak için veya sonraki derleyici seçeneğini belirtin /std:c++20
.
Bir dizenin belirtilen ön ekle başlayıp başlamadiğini denetlemek için bkz starts_with
.
Örnek
// 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
Bir dizedeki bir öğeyi veya öğe aralığını belirtilen konumdan kaldırır.
iterator erase(
iterator first,
iterator last);
iterator erase(
iterator iter);
basic_string<CharType, Traits, Allocator>& erase(
size_type offset = 0,
size_type count = npos);
Parametreler
first
Silinecek aralıktaki ilk öğenin konumunu ele alan bir yineleyici.
last
Silinecek aralıktaki son öğeyi geçen konumu ele alan bir yineleyici.
iter
Silinecek dizedeki öğenin konumunu ele alan bir yineleyici.
offset
Kaldırılacak dizedeki ilk karakterin dizini.
count
ile başlayan offset
dize aralığında o kadar çok öğe varsa kaldırılacak öğe sayısı.
Dönüş değeri
İlk iki üye işlevi için, üye işlevi tarafından kaldırılan son karakterden sonraki ilk karakteri ele alan bir yineleyici. Üçüncü üye işlevi için, öğelerin silindiği dize nesnesine bir başvuru.
Açıklamalar
Üçüncü üye işlevi döndürür *this
.
Örnek
// 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
Bir dizeyi, belirtilen karakter dizisiyle eşleşen bir alt dizenin ilk oluşumu için ileri yönde arar.
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;
Parametreler
char_value
Üye işlevinin aranacak karakter değeri.
offset
Aramanın başlayacağı konumun dizini.
ptr
Üye işlevinin arandığı C dizesi.
count
Üye işlevinin arandığı C dizesindeki ilk karakterden ileri doğru sayılan karakter sayısı.
str
Üye işlevinin arandığı dize.
Dönüş değeri
Başarılı olduğunda alt dizenin ilk karakterinin dizini arandı; aksi takdirde npos
.
Örnek
// 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
Belirtilen dizenin öğesi olmayan ilk karakter için bir dizede arama yapma.
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;
Parametreler
char_value
Üye işlevinin aranacak karakter değeri.
offset
Aramanın başlayacağı konumun dizini.
ptr
Üye işlevinin arandığı C dizesi.
count
Üye işlevinin arandığı C dizesindeki ilk karakterden ileri doğru sayılan karakter sayısı.
str
Üye işlevinin arandığı dize.
Dönüş değeri
Başarılı olduğunda alt dizenin ilk karakterinin dizini arandı; aksi takdirde npos
.
Örnek
// 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
Belirtilen dizenin herhangi bir öğesiyle eşleşen ilk karakter için bir dizede arar.
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;
Parametreler
char_value
Üye işlevinin aranacak karakter değeri.
offset
Aramanın başlayacağı konumun dizini.
ptr
Üye işlevinin arandığı C dizesi.
count
Üye işlevinin arandığı C dizesindeki ilk karakterden ileri doğru sayılan karakter sayısı.
str
Üye işlevinin arandığı dize.
Dönüş değeri
Başarılı olduğunda alt dizenin ilk karakterinin dizini arandı; aksi takdirde npos
.
Örnek
// 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
Belirtilen dizenin herhangi bir öğesi olmayan son karakter için bir dizede arama yapma.
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;
Parametreler
char_value
Üye işlevinin aranacak karakter değeri.
offset
Aramanın bitmek üzere olduğu konumun dizini.
ptr
Üye işlevinin arandığı C dizesi.
count
Üye işlevinin arandığı C dizesindeki ilk karakterden ileri doğru sayılan karakter sayısı.
str
Üye işlevinin arandığı dize.
Dönüş değeri
Başarılı olduğunda alt dizenin ilk karakterinin dizini arandı; aksi takdirde npos
.
Örnek
// 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
Bir dizede belirtilen dizenin herhangi bir öğesiyle eşleşen son karakteri arar.
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;
Parametreler
char_value
Üye işlevinin aranacak karakter değeri.
offset
Aramanın bitmek üzere olduğu konumun dizini.
ptr
Üye işlevinin arandığı C dizesi.
count
Üye işlevinin arandığı C dizesindeki ilk karakterden ileri doğru sayılan karakter sayısı.
str
Üye işlevinin arandığı dize.
Dönüş değeri
Başarılı olduğunda alt dizenin aranan son karakterinin dizini; aksi takdirde npos
.
Örnek
// 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
Dizedeki ilk öğeye başvuru döndürür.
const_reference front() const;
reference front();
Dönüş değeri
Dizenin ilk öğesine yapılan ve boş olmayan bir başvuru.
Açıklamalar
basic_string::get_allocator
Dizeyi oluşturmak için kullanılan ayırıcı nesnesinin bir kopyasını döndürür.
allocator_type get_allocator() const;
Dönüş değeri
Dize tarafından kullanılan ayırıcı.
Açıklamalar
Üye işlevi depolanan ayırıcı nesnesini döndürür.
Dize sınıfı için ayırıcılar, sınıfın depolamayı nasıl yöneteceğini belirtir. Kapsayıcı sınıfları ile sağlanan varsayılan ayırıcılar çoğu programlama gereksinimi için yeterlidir. Kendi ayırıcı sınıfınızı yazmak ve kullanmak gelişmiş bir C++ özelliğidir.
Örnek
// 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
Belirtilen konumda dizeye bir öğe, birkaç öğe veya öğe aralığı ekler.
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);
Parametreler
position
Yeni karakterleri ekleme noktasının arkasındaki konumun dizini.
ptr
Dizeye tamamen veya kısmen eklenecek C dizesi.
count
Eklenecek karakter sayısı.
str
Hedef dizeye tamamen veya kısmen eklenecek dize.
offset
Kaynak dizenin eklenecek karakterleri sağlayan bölümünün dizini.
char_value
Eklenecek öğelerin karakter değeri.
iter
Arkasına bir karakterin eklendiği konumu ele alan bir yineleyici.
first
Bir giriş yineleyicisi const_pointer
veya const_iterator
eklenecek kaynak aralığındaki ilk öğeyi ele alır.
last
Bir giriş yineleyicisi veya const_pointer
const_iterator
eklenecek kaynak aralığındaki son öğenin ötesindeki bir öğenin konumunu ele alır.
Dönüş değeri
Değer döndüren işlevler aşağıdakilerden birini döndürür:
- Özgün dizeyi ve yeni karakterleri içeren öğesine başvuru
basic_string
. - Eklenen karakterlerin başındaki bir yineleyici.
Örnek
// 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
Dizedeki bir öğeye erişebilen ve okuyabilen rastgele erişim yineleyicisi sağlayan bir const
tür.
typedef implementation-defined iterator;
Açıklamalar
Bir tür iterator
, bir karakterin değerini değiştirmek için kullanılabilir ve bir dizeyi ileri yönde yinelemek için kullanılır.
Örnek
bildirme ve kullanma iterator
örneği için begin
örneğine bakın.
basic_string::length
Bir dizedeki geçerli öğe sayısını döndürür.
size_type length() const;
Açıklamalar
üye işlevi ile aynıdır size
.
Örnek
// 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
Bir dizenin içerebileceği en fazla karakter sayısını döndürür.
size_type max_size() const;
Dönüş değeri
Bir dizenin içerebileceği karakter sayısı üst sınırı.
Açıklamalar
Bir işlem en büyük boyuttan daha uzun bir dize ürettiğinde Sınıf türünde length_error
bir özel durum oluşur.
Örnek
// 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
Bir arama işlevi başarısız olduğunda "bulunamadı" veya "kalan tüm karakterler" belirten -1 olarak başlatılan imzasız tamsayı değeri.
static const size_type npos = -1;
Açıklamalar
Dönüş değeri değer için npos
denetlenecekse, dönüş değeri size_type
veya unsigned
türünde olmadığı int
sürece çalışmayabilir.
Örnek
bildirme ve kullanma npos
örneği için find
örneğine bakın.
basic_string::operator+=
Dizeye karakter ekler.
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);
Parametreler
char_value
Eklenecek karakter.
ptr
Eklenecek C dizesinin karakterleri.
right
Eklenecek dizenin karakterleri.
Dönüş değeri
Üye işlevi tarafından geçirilen karakterlerle eklenen dize nesnesine başvuru.
Açıklamalar
Karakterler, veya üye işlevleri append
veya push_back
kullanılarak operator+=
bir dizeye eklenebilir. Tek operator+=
bağımsız değişkenli değerleri eklerken, birden çok bağımsız değişken ekleme üye işlevi, ekleme için dizenin belirli bir bölümünün belirtilmesine izin verir.
Örnek
// 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=
Bir dizenin içeriğine yeni karakter değerleri atar.
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);
Parametreler
char_value
Atanacak karakter değeri.
ptr
Hedef dizeye atanacak C dizesinin karakterlerine işaret eden bir işaretçi.
right
Karakterleri hedef dizeye atanacak kaynak dize.
Dönüş değeri
Üye işlevi tarafından yeni karakterler atanmakta olan dize nesnesine başvuru.
Açıklamalar
Dizelere yeni karakter değerleri atanabilir. Yeni değer bir dize ve C dizesi veya tek bir karakter olabilir. operator=
Yeni değer tek bir parametreyle açıklanabilirse kullanılabilir; aksi takdirde, dizenin hangi bölümünün hedef dizeye atanacağını belirtmek için birden çok parametresi olan üye işlevi assign
kullanılabilir.
Örnek
// 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[]
Dizede belirtilen dizine sahip karaktere başvuru sağlar.
const_reference operator[](size_type offset) const;
reference operator[](size_type offset);
Parametreler
offset
Başvurulacak öğenin konumunun dizini.
Dönüş değeri
Parametre dizini tarafından belirtilen konumdaki dizenin karakterine başvuru.
Açıklamalar
Dizenin ilk öğesi sıfır dizinine sahiptir ve aşağıdaki öğeler pozitif tamsayılar tarafından ardışık olarak dizinlenir. Bu, n uzunluklu bir dizenin n- 1 sayısıyla dizine alınan n . öğesi olduğu anlamına gelir.
operator[]
bir dizenin öğelerine okuma ve yazma erişimi sağlamak için üye işlevinden at
daha hızlıdır.
operator[]
parametre olarak geçirilen dizinin geçerli olup olmadığını denetlemez, ancak üye işlevi at
geçerli ve bu nedenle geçerlilikte kullanılması gereken kesin değildir. Üye işlevine at
geçirilen geçersiz bir dizin (sıfırdan küçük veya dizenin boyutundan büyük veya buna eşit bir dizin) bir out_of_range
Sınıf özel durumu oluşturur. geçersiz bir dizin geçirildiğinde operator[]
tanımsız davranışla sonuçlanır, ancak dizenin uzunluğuna eşit dizin, const dizeleri için geçerli bir dizindir ve işleç bu dizin geçirildiğinde null karakteri döndürür.
Döndürülen başvuru, dize olmayanlar içinconst
dize yeniden yüklemeleri veya değişiklikler tarafından geçersiz kılınabilir.
_ITERATOR_DEBUG_LEVEL
1 veya 2 olarak ayarlandığında, dizenin sınırlarının dışındaki bir öğeye erişmeye çalışırsanız bir çalışma zamanı hatası oluşur. Daha fazla bilgi için bkz . İşaretli Yineleyiciler.
Örnek
// 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
Dize veya karakter dizisindeki bir karakter öğesine işaretçi sağlayan bir tür.
typedef typename allocator_type::pointer pointer;
Açıklamalar
türü, için allocator_type::pointer
bir eş anlamlıdır.
türü string
için, ile eşdeğerdir char *
.
Örnek
// 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
Dizenin son öğesini siler.
void pop_back();
Açıklamalar
Bu üye işlevi, dizinin boş olmayan son öğesini silmek için etkili bir şekilde çağırır erase(size() - 1)
.
basic_string::push_back
Dizenin sonuna bir öğe ekler.
void push_back(value_type char_value);
Parametreler
char_value
Dizenin sonuna eklenecek karakter.
Açıklamalar
Üye işlevi etkin bir şekilde öğesini çağırır insert( end, char_value )
. Daha fazla bilgi için bkz. insert
ve end
.
Örnek
// 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
Ters çevrilmiş dizedeki ilk öğeye bir yineleyici döndürür.
const_reverse_iterator rbegin() const;
reverse_iterator rbegin();
Dönüş değeri
Ters çevrilmiş dizedeki ilk öğeye rastgele erişim yineleyicisi döndürür ve karşılık gelen ters çevrilmeyen dizedeki son öğeyi ele alır.
Açıklamalar
rbegin
aynı bir dizeyle kullanıldığı gibi begin
ters çevrilmiş bir dizeyle kullanılır.
değerinin dönüş değeri rbegin
bir const_reverse_iterator
öğesine atanmışsa dize nesnesi değiştirilemez. değerinin dönüş değeri rbegin
bir reverse_iterator
öğesine atanmışsa, dize nesnesi değiştirilebilir.
rbegin
geriye doğru bir dize aracılığıyla yineleme başlatmak için kullanılabilir.
Örnek
// 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
Dizede depolanan bir öğeye başvuru sağlayan bir tür.
typedef typename allocator_type::reference reference;
Açıklamalar
Bir öğenin değerini değiştirmek için bir tür reference
kullanılabilir.
türü, için allocator_type::reference
bir eş anlamlıdır.
türü string
için, ile eşdeğerdir chr&
.
Örnek
bildirme ve kullanma reference
örneği için at
örneğine bakın.
basic_string::rend
Ters çevrilmiş dizedeki son öğenin başarılı olduğu konumu ele alan bir yineleyici döndürür.
const_reverse_iterator rend() const;
reverse_iterator rend();
Dönüş değeri
Ters çevrilmiş dizedeki son öğeyi başaran konumu ele alan ters rastgele erişim yineleyicisi.
Açıklamalar
rend
aynı bir dizeyle kullanıldığı gibi end
ters çevrilmiş bir dizeyle kullanılır.
değerinin dönüş değeri rend
bir const_reverse_iterator
öğesine atanmışsa dize nesnesi değiştirilemez. değerinin dönüş değeri rend
bir reverse_iterator
öğesine atanmışsa, dize nesnesi değiştirilebilir.
rend
bir ters yineleyicinin dizenin sonuna ulaşıp ulaşmadığını test etmek için kullanılabilir.
tarafından rend
döndürülen değer başvurulmamalıdır.
Örnek
// 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
Belirtilen konumdaki bir dizedeki öğeleri belirtilen karakterlerle veya diğer aralıklardan, dizelerden veya C dizelerinden kopyalanan karakterlerle değiştirir.
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);
Parametreler
str
İşlenen dize için karakter kaynağı olacak dize.
position_1
Değiştirmenin başladığı işlenen dizenin dizini.
number_1
İşlenen dizede değiştirilecek karakter sayısı üst sınırı.
position_2
Kopyalamanın başladığı parametre dizesinin dizini.
number_2
C-string parametresinden kullanılacak en fazla karakter sayısı.
ptr
İşlenen dize için karakter kaynağı olacak C dizesi.
char_value
İşlenen dizeye kopyalanacak karakter.
first0
İşlenen dizede kaldırılacak ilk karakteri ele alan bir yineleyici.
last0
İşlenen dizede kaldırılacak son karakteri ele alan bir yineleyici.
first
Parametre dizesinde kopyalanacak ilk karakteri ele alan bir yineleyici, const_pointer veya const_iterator.
last
Parametre dizesinde kopyalanacak son karakteri ele alan bir yineleyici, const_pointer veya const_iterator.
count
İşlenen dizeye kopyalanan sayıdır char_value
.
Dönüş değeri
Değiştirilen işlenen dizesi.
Örnek
// 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
Dizenin kapasitesini en az belirtilen bir sayı kadar büyük bir sayıya ayarlar.
void reserve(size_type count = 0);
Parametreler
count
Belleğin ayrıldığı karakter sayısı.
Açıklamalar
Yeniden konumlandırma zaman alan bir işlem olduğundan yeterli kapasiteye sahip olmak önemlidir. Ayrıca, bir dizedeki karakterlere başvuran tüm başvuruları, işaretçileri ve yineleyicileri geçersiz kılmıştır.
Dize nesnesi türleri için kapasite kavramı, türündeki vector
nesnelerle aynıdır. 'den farklı olarak vector
, bir nesnenin kapasitesini küçültmek için üye işlevi reserve
çağrılabilir. İstek bağlamaz ve gerçekleşebilir veya gerçekleşmeyebilir. Parametresinin varsayılan değeri sıfır olduğundan çağrısı, reserve
dizenin kapasitesini dizede bulunan karakter sayısına uyacak şekilde küçültmek için yapılan bağlama olmayan bir istektir. Kapasite hiçbir zaman geçerli karakter sayısının altına indirgenemez.
Çağırma reserve
, bir dizenin kapasitesini küçültmenin tek yoludur. Ancak, yukarıda belirtildiği gibi, bu istek kesin değildir ve gerçekleşmeyebilir.
Örnek
// 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
Bir dize için, öğeleri gerektiği gibi ekleyerek veya silip ekleyerek yeni bir boyut belirtir.
void resize(
size_type count,);
void resize(
size_type count,
value_type char_value);
Parametreler
count
Dizenin yeni boyutu.
char_value
Daha fazla öğe gerekiyorsa, eklenen karakterlerin ile başlatıldığı değer.
Açıklamalar
Sonuçta elde edilen boyut karakter sayısı üst sınırını aşarsa, form oluşturur length_error
.
Örnek
// 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
Dizede depolanan bir öğeye başvuru sağlayan bir tür.
typedef std::reverse_iterator<iterator> reverse_iterator;
Açıklamalar
Bir tür reverse_iterator
, bir karakterin değerini değiştirmek için kullanılabilir ve bir dizeyi tersten yinelemek için kullanılır.
Örnek
bildirme ve kullanma reverse_iterator
örneği için rbegin
örneğine bakın.
basic_string::rfind
Bir dizeyi, belirtilen karakter dizisiyle eşleşen bir alt dizenin ilk oluşumu için geriye doğru arar.
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;
Parametreler
char_value
Üye işlevinin aranacak karakter değeri.
offset
Aramanın başlayacağı konumun dizini.
ptr
Üye işlevinin arandığı C dizesi.
count
Üye işlevinin arandığı C dizesindeki ilk karakterden ileri doğru sayılan karakter sayısı.
str
Üye işlevinin arandığı dize.
Dönüş değeri
Başarılı olduğunda alt dizenin ilk karakterinin geriye doğru arandığında son oluşumun dizini; aksi takdirde npos
.
Örnek
// 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
Dizenin fazla kapasitesini atar.
void shrink_to_fit();
Açıklamalar
Bu üye işlevi, kapsayıcıdaki gereksiz depolamayı ortadan kaldırır.
basic_string::size
Bir dizedeki geçerli öğe sayısını döndürür.
size_type size() const;
Dönüş değeri
Dizenin uzunluğu.
Örnek
// 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
Bir dizedeki öğelerin ve dizinlerin sayısını gösterebilen işaretsiz bir tamsayı türü.
typedef typename allocator_type::size_type size_type;
Açıklamalar
ile eşdeğerdir allocator_type::size_type
.
türü string
için, ile eşdeğerdir size_t
.
Örnek
// 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
Dizenin belirtilen ön ek ile başlayıp başlamadığını denetleyin.
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;
Parametreler
c
Aranacak tek karakterli ön ek.
sv
Aranacak ön eki içeren bir dize görünümü.
dize görünümüne dönüştüren bir geçirebilirsiniz std::basic_string
.
x
Aranacak ön eki içeren null sonlandırılmış karakter dizesi.
Dönüş değeri
true
dize belirtilen ön ek ile başlıyorsa; false
yoksa.
Açıklamalar
starts_with()
C++20 sürümünde yenidir. Bunu kullanmak için veya sonraki derleyici seçeneğini belirtin /std:c++20
.
Bir dizenin belirtilen sonekle bitip bitmediğini görmek için bkz ends_with
.
Örnek
// 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
Belirtilen konumdan başlayarak bir dizeden en fazla bazı karakter sayısının alt dizesini kopyalar.
basic_string<CharType, Traits, Allocator> substr(
size_type offset = 0,
size_type count = npos) const;
Parametreler
offset
Varsayılan değeri 0 olan, dizenin kopyasının oluşturulduğu konumda öğesini bulan dizin.
count
Varsa kopyalanacak karakter sayısı.
Dönüş değeri
İlk bağımsız değişken tarafından belirtilen konumdan başlayarak, dize işleneninin öğelerinin bir kopyası olan bir alt dize nesnesi.
Örnek
// 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
İki dizenin içeriğini değiştirme.
void swap(
basic_string<CharType, Traits, Allocator>& str);
Parametreler
str
Öğeleri hedef dizedeki öğelerle değiştirilecek kaynak dize.
Açıklamalar
Değiştirilmekte olan dizeler aynı ayırıcı nesnesine swap
sahipse üye işlevi:
- Sabit zamanda gerçekleşir.
- Özel durum oluşturmaz.
- İki dizedeki öğeleri belirten hiçbir başvuruyu, işaretçiyi veya yineleyiciyi geçersiz kılmaz.
Aksi takdirde, öğe atamalarını ve oluşturucu çağrılarını denetimli iki dizideki öğe sayısıyla orantılı hale getirir.
Örnek
// 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
Bir dizede depolanan öğelerin karakter özellikleri için bir tür.
typedef Traits traits_type;
Açıklamalar
türü, ikinci şablon parametresi Traits
için bir eş anlamlıdır.
türü string
için, ile eşdeğerdir char_traits<char>
.
Örnek
bildirme ve kullanma traits_type
örneği için copy
örneğine bakın.
basic_string::value_type
Bir dizede depolanan karakterlerin türünü temsil eden bir tür.
typedef typename allocator_type::value_type value_type;
Açıklamalar
ile eşdeğerdir traits_type::char_type
ve türüne string
ait nesneler için eşdeğerdirchar
.
Örnek
// 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.