Partilhar via


basic_string Classe

As sequências controladas por um objeto do tipo basic_string são a classe de cadeia de caracteres C++ padrão e são chamadas de strings, mas não devem ser confundidas com as cadeias de caracteres de estilo C terminadas em nulo usadas em toda a biblioteca padrão C++. A cadeia de caracteres C++ padrão é um contêiner que permite o uso de cadeias de caracteres como tipos normais, como operações de comparação e concatenação, iteradores, algoritmos de biblioteca padrão C++ e cópia e atribuição com memória gerenciada por alocador de classe. Se você precisar converter uma cadeia de caracteres C++ padrão em uma cadeia de caracteres estilo C terminada em nulo, use o basic_string::c_str membro.

Sintaxe

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

Parâmetros

CharType
O tipo de dados de um único caractere a ser armazenado na cadeia de caracteres. A Biblioteca Padrão C++ fornece especializações desse modelo de classe, com as definições de tipo string para elementos do tipo char, wstring, para wchar_t, u16string para char16_te u32string para char32_t.

Traits
Várias propriedades importantes dos CharType elementos em uma especialização basic_string são descritas pela classe Traits. O valor padrão é char_traits<CharType>.

Allocator
O tipo que representa o objeto alocador armazenado que encapsula detalhes sobre a alocação e desalocação de memória da cadeia de caracteres. O valor predefinido é allocator<CharType>.

Construtores

Construtor Descrição
basic_string Constrói uma cadeia de caracteres vazia ou inicializada por caracteres específicos ou que é uma cópia de todo ou parte de algum outro objeto de cadeia de caracteres ou cadeia de caracteres C.

Typedefs (definições de tipos)

Nome do tipo Descrição
allocator_type Um tipo que representa a allocator classe para um objeto de cadeia de caracteres.
const_iterator Um tipo que fornece um iterador de acesso aleatório que pode acessar e ler um const elemento na cadeia de caracteres.
const_pointer Um tipo que fornece um ponteiro para um const elemento em uma cadeia de caracteres.
const_reference Um tipo que fornece uma referência a um const elemento armazenado em uma cadeia de caracteres para ler e executar const operações.
const_reverse_iterator Um tipo que fornece um iterador de acesso aleatório que pode ler qualquer const elemento na cadeia de caracteres.
difference_type Um tipo que fornece a diferença entre dois iteradores que se referem a elementos dentro da mesma cadeia de caracteres.
iterator Um tipo que fornece um iterador de acesso aleatório que pode ler ou modificar qualquer elemento em uma cadeia de caracteres.
npos Um valor integral não assinado inicializado para -1 que indica "não encontrado" ou "todos os caracteres restantes" quando uma função de pesquisa falha.
pointer Um tipo que fornece um ponteiro para um elemento de caractere em uma cadeia de caracteres ou matriz de caracteres.
reference Um tipo que fornece uma referência a um elemento armazenado em uma cadeia de caracteres.
reverse_iterator Um tipo que fornece um iterador de acesso aleatório que pode ler ou modificar um elemento em uma cadeia de caracteres invertida.
size_type Um tipo integral não assinado para o número de elementos em uma cadeia de caracteres.
traits_type Um tipo para os traços de caractere dos elementos armazenados em uma cadeia de caracteres.
value_type Um tipo que representa o tipo de caracteres armazenados em uma cadeia de caracteres.

Funções de membro

Função de membro Descrição
append Adiciona caracteres ao final de uma cadeia de caracteres.
assign Atribui novos valores de caractere ao conteúdo de uma cadeia de caracteres.
at Retorna uma referência ao elemento em um local especificado na cadeia de caracteres.
back Retorna uma referência ao último elemento da cadeia de caracteres.
begin Retorna um iterador endereçando o primeiro elemento da cadeia de caracteres.
c_str Converte o conteúdo de uma cadeia de caracteres como uma cadeia de caracteres no estilo C, terminada em nulo.
capacity Retorna o maior número de elementos que poderiam ser armazenados em uma cadeia de caracteres sem aumentar a alocação de memória da cadeia de caracteres.
cbegin Retorna um iterador const endereçando o primeiro elemento da cadeia de caracteres.
cend Retorna um iterador const que aborda o local que sucede o último elemento em uma cadeia de caracteres.
clear Apaga todos os elementos de uma cadeia de caracteres.
compare Compara uma string com uma string especificada para determinar se as duas strings são iguais ou se uma é lexicograficamente menor que a outra.
copy Copia no máximo um número especificado de caracteres de uma posição indexada em uma cadeia de caracteres de origem para uma matriz de caracteres de destino. Preterido. Utilize basic_string::_Copy_s em substituição.
crbegin Retorna um iterador const que aborda o primeiro elemento em uma cadeia de caracteres invertida.
crend Retorna um iterador const que aborda o local que sucede o último elemento em uma cadeia de caracteres invertida.
_Copy_s Microsoft Specific: Copia no máximo um número especificado de caracteres de uma posição indexada em uma cadeia de caracteres de origem para uma matriz de caracteres de destino.
data Converte o conteúdo de uma cadeia de caracteres em uma matriz de caracteres.
empty Testa se a cadeia de caracteres contém caracteres.
end Retorna um iterador que aborda o local que sucede o último elemento em uma cadeia de caracteres.
ends_with C++20 Verifica se a cadeia de caracteres termina com o sufixo especificado.
erase Remove um elemento ou um intervalo de elementos em uma cadeia de caracteres de uma posição especificada.
find Pesquisa uma cadeia de caracteres em uma direção direta para a primeira ocorrência de uma substring que corresponde a uma sequência especificada de caracteres.
find_first_not_of Procura através de uma cadeia de caracteres o primeiro caractere que não é qualquer elemento de uma cadeia de caracteres especificada.
find_first_of Procura através de uma cadeia de caracteres o primeiro caractere que corresponde a qualquer elemento de uma cadeia de caracteres especificada.
find_last_not_of Procura através de uma cadeia de caracteres o último caractere que não é qualquer elemento de uma cadeia de caracteres especificada.
find_last_of Procura através de uma cadeia de caracteres o último caractere que é um elemento de uma cadeia de caracteres especificada.
front Retorna uma referência ao primeiro elemento de uma cadeia de caracteres.
get_allocator Retorna uma cópia do allocator objeto usado para construir a cadeia de caracteres.
insert Insere um elemento, vários elementos ou um intervalo de elementos na cadeia de caracteres em uma posição especificada.
length Retorna o número atual de elementos em uma cadeia de caracteres.
max_size Retorna o número máximo de caracteres que uma cadeia de caracteres poderia conter.
pop_back Apaga o último elemento da cadeia de caracteres.
push_back Adiciona um elemento ao final da cadeia de caracteres.
rbegin Retorna um iterador para o primeiro elemento em uma cadeia de caracteres invertida.
rend Retorna um iterador que aponta logo além do último elemento em uma cadeia de caracteres invertida.
replace Substitui elementos em uma cadeia de caracteres em uma posição especificada por caracteres especificados ou caracteres copiados de outros intervalos ou cadeias de caracteres ou cadeias de caracteres C.
reserve Define a capacidade da cadeia de caracteres como um número pelo menos tão grande quanto um número especificado.
resize Especifica um novo tamanho para uma cadeia de caracteres, anexando ou apagando elementos conforme necessário.
rfind Pesquisa uma cadeia de caracteres em uma direção inversa para a primeira ocorrência de uma substring que corresponde a uma sequência especificada de caracteres.
shrink_to_fit Descarta o excesso de capacidade da cadeia de caracteres.
size Retorna o número atual de elementos em uma cadeia de caracteres.
starts_with C++20 Verifica se a cadeia de caracteres começa com o prefixo especificado.
substr Copia uma substring de, no máximo, algum número de caracteres de uma cadeia de caracteres que começa a partir de uma posição especificada.
swap Troque o conteúdo de duas cadeias de caracteres.

Operadores

Operador Descrição
operator+= Acrescenta caracteres a uma cadeia de caracteres.
operator= Atribui novos valores de caractere ao conteúdo de uma cadeia de caracteres.
operator[] Fornece uma referência ao caractere com um índice especificado em uma cadeia de caracteres.

Literais

Os cabeçalhos que definem basic_string também definem os seguintes literais definidos pelo usuário, que criam uma cadeia de caracteres do tipo especificado a partir dos parâmetros de entrada.

Declaração Descrição
inline string operator"" s(const char* str, size_t len) Devoluções: string(str, len)
inline string operator"" s(const wchar_t* str, size_t len) Devoluções: wstring(str, len)
inline basic_string<char8_t> operator"" s(const char8_t* str, size_t len) Devoluções: basic_string<char8_t>(str, len)
inline u16string operator"" s(const char16_t* str, size_t len) Devoluções: u16string(str, len)
inline u32string operator"" s(const char32_t* str, size_t len) Devoluções: u32string(str, len)

Observações

Se uma função for solicitada a gerar uma sequência maior do que max_size elementos, a função relatará um erro de comprimento lançando um objeto do tipo length_error.

Referências, ponteiros e iteradores que designam elementos da sequência controlada podem se tornar inválidos após qualquer chamada para uma função que altera a sequência controlada ou após a primeira chamada para uma função não-membroconst .

Requerimentos

Cabeçalho:<string>

Espaço de nomes: std

basic_string::allocator_type

Um tipo que representa a classe alocator para um objeto string.

typedef Allocator allocator_type;

Observações

O tipo é um sinônimo para o parâmetro de modelo Allocator.

Exemplo

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

Adiciona caracteres ao final de uma cadeia de caracteres.

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);

Parâmetros

ptr
A cadeia de caracteres C a ser acrescentada.

str
A cadeia de caracteres cujos caracteres devem ser acrescentados.

offset
O índice da parte da cadeia de caracteres de origem que fornece os caracteres a serem acrescentados.

count
O número de caracteres a serem acrescentados, no máximo, da cadeia de caracteres de origem.

char_value
O valor do caractere a ser acrescentado.

first
Um iterador de entrada endereçando o primeiro elemento no intervalo a ser acrescentado.

last
Um iterador de entrada, const_pointerou const_iterator endereçando a posição do que está além do último elemento no intervalo a ser acrescentado.

Valor de retorno

Uma referência ao objeto string que está sendo acrescentado com os caracteres passados pela função member.

Observações

Os caracteres podem ser acrescentados a uma cadeia de caracteres usando as operator+= funções ou as funções append de membro ou push_back. operator+= acrescenta valores de argumento único enquanto a função de membro de vários argumentos append permite que uma parte específica de uma cadeia de caracteres seja especificada para adição.

Exemplo

// 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 string 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 string 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

Atribui novos valores de caractere ao conteúdo de uma cadeia de caracteres.

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);

Parâmetros

ptr
Um ponteiro para os caracteres da cadeia de caracteres C a ser atribuída à cadeia de caracteres de destino.

count
O número de caracteres a serem atribuídos, a partir da cadeia de caracteres de origem.

str
A cadeia de caracteres de origem cujos caracteres devem ser atribuídos à cadeia de caracteres de destino.

char_value
O valor do caractere a ser atribuído.

first
Um iterador de entrada, const_pointer ou const_iterator endereçando o primeiro caractere no intervalo da cadeia de caracteres de origem a ser atribuído ao intervalo de destino.

last
Um iterador de entrada, const_pointer ou const_iterator endereçando aquele além do último caractere no intervalo da cadeia de caracteres de origem a ser atribuído ao intervalo de destino.

off
A posição na qual novos caracteres começarão a ser atribuídos.

Valor de retorno

Uma referência ao objeto string que está sendo atribuído novos caracteres pela função member.

Observações

As cadeias de caracteres podem receber novos valores de caracteres. O novo valor pode ser uma cadeia de caracteres e uma cadeia de caracteres C ou um único caractere. O operator= pode ser usado se o novo valor pode ser descrito por um único parâmetro, caso contrário, a função assignmember, que tem vários parâmetros, pode ser usada para especificar qual parte da string deve ser atribuída a uma string de destino.

Exemplo

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

Fornece uma referência ao caractere com um índice especificado em uma cadeia de caracteres.

const_reference at(size_type offset) const;

reference at(size_type offset);

Parâmetros

offset
O índice da posição do elemento a ser referenciado.

Valor de retorno

Uma referência ao caractere da cadeia de caracteres na posição especificada pelo índice do parâmetro.

Observações

O primeiro elemento da string tem um índice de zero e os seguintes elementos são indexados consecutivamente pelos inteiros positivos, de modo que uma string de comprimento n tem um nésimo elemento indexado pelo número n - 1.

O membro operator[] é mais rápido do que a função at de membro para fornecer acesso de leitura e gravação aos elementos de uma cadeia de caracteres.

O membro operator[] não verifica se o índice passado como parâmetro é válido, mas a função at de membro é válida e, portanto, deve ser usada se a validade não for certa. Um índice inválido, que é um índice menor que zero ou maior que ou igual ao tamanho da cadeia de caracteres, passado para a função at de membro lança uma out_of_range exceção de classe. Um índice inválido passado para os operator[] resultados em comportamento indefinido, mas o índice igual ao comprimento da cadeia de caracteres é um índice válido para cadeias de caracteres const e o operador retorna o caractere nulo quando passado esse índice.

A referência retornada pode ser invalidada por realocações de cadeia de caracteres ou modificações para as não-stringsconst .

Exemplo

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

Retorna uma referência ao último elemento da cadeia de caracteres.

const_reference back() const;

reference back();

Valor de retorno

Uma referência ao último elemento da cadeia de caracteres, que deve ser não-vazio.

Observações

basic_string::basic_string

Constrói uma cadeia de caracteres vazia, inicializada por caracteres específicos ou é uma cópia de todo ou parte de outro objeto de cadeia de caracteres ou cadeia de caracteres estilo C (terminada em nulo).

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);

Parâmetros

ptr
A cadeia de caracteres C cujos caracteres devem ser usados para inicializar o que está sendo string construído. Esse valor não pode ser um ponteiro nulo, a menos que count seja zero.

alloc_type
A classe do alocador de armazenamento para o objeto de cadeia de caracteres que está sendo construído.

count
O número de caracteres a serem inicializados.

right
A cadeia de caracteres para inicializar a cadeia de caracteres que está sendo construída.

right_offset
O índice de um caractere em uma cadeia de caracteres que é o primeiro a ser usado para inicializar valores de caracteres para a cadeia de caracteres que está sendo construída.

char_value
O valor do caractere a ser copiado para a cadeia de caracteres que está sendo construída.

first
Um iterador de entrada, const_pointer ou const_iterator endereçando o primeiro elemento no intervalo de origem a ser inserido.

last
Um iterador de entrada, const_pointer ou const_iterator abordando a posição do único além do último elemento no intervalo de origem a ser inserido.

Valor de retorno

Uma referência ao objeto string que está sendo construído pelos construtores.

Observações

Todos os construtores armazenam e basic_string::allocator_type inicializam a sequência controlada. O objeto alocador é o argumento al, se presente. Para o construtor copy, é right.get_allocator(), uma chamada para basic_string::get_allocator. Caso contrário, o alocador é Alloc().

A sequência controlada é inicializada com uma cópia da sequência de operando especificada pelos operandos restantes. Um construtor sem uma sequência de operando especifica uma sequência controlada inicial vazia. Se InputIterator for um tipo inteiro em um construtor de modelo, a sequência first, last de operando se comportará da mesma forma que (size_type) first, (value_type) last.

Exemplo

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

Retorna um iterador endereçando o primeiro elemento da cadeia de caracteres.

const_iterator begin() const;

iterator begin();

Valor de retorno

Um iterador de acesso aleatório que aborda o primeiro elemento da sequência ou logo após o final de uma sequência vazia.

Exemplo

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

Converte o conteúdo de uma cadeia de caracteres como uma cadeia de caracteres terminada nula no estilo C.

const value_type *c_str() const;

Valor de retorno

Um ponteiro para a versão em estilo C da cadeia de caracteres que invoca. O valor do ponteiro não é válido depois de chamar uma não-funçãoconst , incluindo o destruidor, na basic_string classe no objeto.

Observações

Os objetos do tipo string pertencentes ao modelo basic_string<char> de classe não são necessariamente terminados nulos. O caractere '\0' nulo é usado como um caractere especial em uma cadeia de caracteres C para marcar o final da cadeia de caracteres, mas não tem nenhum significado especial em um objeto de cadeia de caracteres e pode ser uma parte da cadeia de caracteres como qualquer outro caractere. Há uma conversão automática de const char * em strings, mas a classe string não fornece conversões automáticas de strings no estilo C para objetos do tipo basic_string<char>.

A cadeia de caracteres no estilo C retornada não deve ser modificada, o que pode invalidar o ponteiro para a cadeia de caracteres, ou excluída, pois a cadeia de caracteres tem um tempo de vida limitado e pertence à cadeia de caracteres da classe.

Exemplo

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

Retorna o maior número de elementos que poderiam ser armazenados em uma cadeia de caracteres sem aumentar a alocação de memória da cadeia de caracteres.

size_type capacity() const;

Valor de retorno

O tamanho do armazenamento atualmente alocado na memória para armazenar a cadeia de caracteres.

Observações

A função member retorna o armazenamento atualmente alocado para manter a sequência controlada, um valor pelo menos tão grande quanto size.

Exemplo

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

Retorna um iterador const que aborda o primeiro elemento no intervalo.

const_iterator cbegin() const;

Valor de retorno

Um iterador de acesso aleatório const que aponta para o primeiro elemento do intervalo ou para o local logo após o final de um intervalo vazio (para um intervalo vazio, cbegin() == cend()).

Observações

Com o valor de retorno de cbegin, os elementos no intervalo não podem ser modificados.

Você pode usar essa função de membro no lugar da função de membro begin() para garantir que o valor de retorno seja const_iterator. Normalmente, ele é usado junto com a auto palavra-chave de dedução de tipo, conforme mostrado no exemplo a seguir. No exemplo, considere Container ser um recipiente modificável (não-const) de qualquer tipo que suporte begin() e cbegin().

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

// i2 is Container<T>::const_iterator

basic_string::cend

Retorna um iterador const que aborda o local logo após o último elemento de um intervalo.

const_iterator cend() const;

Valor de retorno

Um const iterador de acesso aleatório que aponta para além do final do intervalo.

Observações

cend é usado para testar se um iterador passou no final de seu intervalo.

Você pode usar essa função de membro no lugar da função de membro end() para garantir que o valor de retorno seja const_iterator. Normalmente, ele é usado junto com a auto palavra-chave de dedução de tipo, conforme mostrado no exemplo a seguir. No exemplo, considere Container ser um recipiente modificável (não-const) de qualquer tipo que suporte end() e cend().

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

// i2 is Container<T>::const_iterator

O valor retornado por cend não deve ser desreferenciado.

basic_string::clear

Apaga todos os elementos de uma cadeia de caracteres.

void clear();

Observações

A cadeia de caracteres na qual a função de membro é chamada estará vazia.

Exemplo

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

Faz uma comparação que diferencia maiúsculas de minúsculas com uma cadeia de caracteres especificada para determinar se as duas cadeias são iguais ou se uma é lexicograficamente menor que a outra.

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;

Parâmetros

str
A cadeia de caracteres que deve ser comparada com a cadeia de caracteres do operando.

position_1
O índice da cadeia de caracteres do operando na qual a comparação começa.

number_1
O número máximo de caracteres da cadeia de caracteres do operando a ser comparado.

number_2
O número máximo de caracteres da cadeia de caracteres de parâmetro a ser comparada.

offset
O índice da cadeia de caracteres de parâmetro na qual a comparação começa.

count
O número máximo de caracteres da cadeia de caracteres de parâmetro a ser comparada.

ptr
A cadeia de caracteres C a ser comparada com a cadeia de caracteres do operando.

Valor de retorno

Um valor negativo se a cadeia de caracteres do operando for menor que a cadeia de caracteres do parâmetro; zero se as duas cadeias forem iguais; ou um valor positivo se a cadeia de caracteres do operando for maior que a cadeia de caracteres do parâmetro.

Observações

As compare funções de membro comparam todas, ou parte, das cadeias de caracteres de parâmetro e operando, dependendo de qual em usado.

A comparação diferencia maiúsculas de minúsculas.

Exemplo

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

Um tipo que fornece um iterador de acesso aleatório que pode acessar e ler um const elemento na cadeia de caracteres.

typedef implementation-defined const_iterator;

Observações

Um tipo const_iterator não pode ser usado para modificar o valor de um caractere e é usado para iterar através de uma cadeia de caracteres em uma direção para frente.

Exemplo

Veja o exemplo para begin obter um exemplo de como declarar e usar const_iterator.

basic_string::const_pointer

Um tipo que fornece um ponteiro para um const elemento em uma cadeia de caracteres.

typedef typename allocator_type::const_pointer const_pointer;

Observações

O tipo é sinônimo de allocator_type::const_pointer.

Para o tipo string, é equivalente a char*.

Os ponteiros declarados const devem ser inicializados quando são declarados. Os ponteiros Const sempre apontam para o mesmo local de memória e podem apontar para dados constantes ou não constantes.

Exemplo

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

Um tipo que fornece uma referência a um const elemento armazenado em uma cadeia de caracteres para ler e executar const operações.

typedef typename allocator_type::const_reference const_reference;

Observações

Um tipo const_reference não pode ser usado para modificar o valor de um elemento.

O tipo é sinônimo de allocator_type::const_reference. Para o tipo string, é equivalente a const char&.

Exemplo

Veja o exemplo para at obter um exemplo de como declarar e usar const_reference.

basic_string::const_reverse_iterator

Um tipo que fornece um iterador de acesso aleatório que pode ler qualquer const elemento na cadeia de caracteres.

typedef std::reverse_iterator<const_iterator> const_reverse_iterator;

Observações

Um tipo const_reverse_iterator não pode modificar o valor de um caractere e é usado para iterar através de uma cadeia de caracteres ao contrário.

Exemplo

Veja o exemplo para rbegin obter um exemplo de como declarar e usar const_reverse_iterator.

basic_string::copy

Copia no máximo um número especificado de caracteres de uma posição indexada em uma cadeia de caracteres de origem para uma matriz de caracteres de destino.

Esse método é potencialmente inseguro, pois depende do chamador para verificar se os valores passados estão corretos. Em vez disso, considere usar basic_string::_Copy_s.

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

Parâmetros

ptr
A matriz de caracteres de destino para a qual os elementos devem ser copiados.

count O número de caracteres a serem copiados, no máximo, da cadeia de caracteres de origem.

offset
A posição inicial na cadeia de caracteres de origem a partir da qual as cópias devem ser feitas.

Valor de retorno

O número de caracteres copiados.

Observações

Um caractere nulo não é anexado ao final da cópia.

Exemplo

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

Retorna um iterador const que aborda o primeiro elemento em uma cadeia de caracteres invertida.

const_reverse_iterator crbegin() const;

Valor de retorno

Um iterador reverso que aponta logo além do final da cadeia de caracteres. A posição designa o início da cadeia de caracteres inversa.

basic_string::crend

Retorna um const iterador que aborda o local que sucede o último elemento em uma cadeia de caracteres invertida.

const_reverse_iterator crend() const;

Valor de retorno

Um const iterador reverso que aborda o local que sucede o último elemento em uma cadeia de caracteres invertida (o local que precedeu o primeiro elemento na cadeia de caracteres não invertida).

Observações

basic_string::_Copy_s

Copia no máximo um número especificado de caracteres de uma posição indexada em uma cadeia de caracteres de origem para uma matriz de caracteres de destino.

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

Parâmetros

dest
A matriz de caracteres de destino para a qual os elementos devem ser copiados.

dest_size
O tamanho do dest.

count O número de caracteres a serem copiados, no máximo, da cadeia de caracteres de origem.

offset
A posição inicial na cadeia de caracteres de origem a partir da qual as cópias devem ser feitas.

Valor de retorno

O número de caracteres copiados.

Observações

Um caractere nulo não é anexado ao final da cópia. Esta função é específica da Microsoft.

Exemplo

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

Converte o conteúdo de uma cadeia de caracteres em uma matriz de caracteres terminada em nulo.

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

Valor de retorno

Um ponteiro para o primeiro elemento da matriz terminada nula que contém o conteúdo da cadeia de caracteres. Para uma cadeia de caracteres vazia, o ponteiro aponta para um único caractere nulo igual a value_type().

Observações

O ponteiro retornado por data pontos em um intervalo [data(), data() + size()]válido. Cada elemento no intervalo corresponde aos dados atuais na cadeia de caracteres. Ou seja, para cada deslocamento n válido no intervalo, data() + n == addressof(operator[](n)).

Se você modificar o conteúdo da cadeia de caracteres retornada pela const sobrecarga de data, o comportamento será indefinido. Você também obtém um comportamento indefinido se o caractere nulo do terminal for alterado para qualquer outro valor. O ponteiro retornado pode ser invalidado se uma não-referênciaconst à cadeia de caracteres for passada para uma função de biblioteca padrão. Também pode ser invalidado por uma chamada para uma função não-membroconst . Chamadas para membros at, back, begin, end, front, rbegin, rende operator[] não invalidam o ponteiro.

Antes do C++11, data não garantia que a cadeia de caracteres retornada fosse terminada em nulo. Desde C++11, data e c_str ambos retornam uma cadeia de caracteres terminada nula e são efetivamente os mesmos.

A não-sobrecargaconst é nova no C++17. Para usá-lo, especifique a opção de compilador /std:c++17 ou posterior.

Exemplo

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

Um tipo que fornece a diferença entre dois iteradores que se referem a elementos dentro da mesma cadeia de caracteres.

typedef typename allocator_type::difference_type difference_type;

Observações

O tipo inteiro assinado descreve um objeto que pode representar a diferença entre os endereços de quaisquer dois elementos na sequência controlada.

Para o tipo string, é equivalente a ptrdiff_t.

Exemplo

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

Testa se a cadeia de caracteres contém caracteres ou não.

bool empty() const;

Valor de retorno

true se o objeto string não contiver caracteres; false se tiver pelo menos um caráter.

Observações

A função de membro é equivalente a size == 0.

Exemplo

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

Retorna um iterador que aborda o local que sucede o último elemento em uma cadeia de caracteres.

const_iterator end() const;

iterator end();

Valor de retorno

Retorna um iterador de acesso aleatório que aborda o local que sucede o último elemento em uma cadeia de caracteres.

Observações

end é frequentemente usado para testar se um iterador atingiu o final de sua cadeia de caracteres. O valor retornado por end não deve ser desreferenciado.

Se o valor de retorno de end for atribuído a um const_iterator, o objeto string não poderá ser modificado. Se o valor de retorno de end for atribuído a um iterator, o objeto string poderá ser modificado.

Exemplo

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

Verifique se a cadeia de caracteres termina com o sufixo especificado.

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;

Parâmetros

c
O sufixo de caractere único a ser procurado.

sv
Uma vista de cadeia de caracteres que contém o sufixo a procurar.
Você pode passar um std::basic_string, que converte em uma exibição de cadeia de caracteres.

x
Cadeia de caracteres terminada em nulo que contém o sufixo a procurar.

Valor de retorno

true se a string termina com o sufixo especificado; false caso contrário.

Observações

ends_with() é novo no C++20. Para usá-lo, especifique a opção de compilador /std:c++20 ou posterior.

Consulte starts_with para verificar se uma cadeia de caracteres começa com o prefixo especificado.

Exemplo

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

Remove um elemento ou um intervalo de elementos em uma cadeia de caracteres de uma posição especificada.

iterator erase(
    iterator first,
    iterator last);

iterator erase(
    iterator iter);

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

Parâmetros

first
Um iterador abordando a posição do primeiro elemento no intervalo a ser apagado.

last
Um iterador abordando a posição um após o último elemento no intervalo a ser apagado.

iter
Um iterador abordando a posição do elemento na cadeia de caracteres a ser apagada.

offset
O índice do primeiro caractere na cadeia de caracteres a ser removido.

count
O número de elementos que serão removidos se houver tantos no intervalo da cadeia de caracteres começando com offset.

Valor de retorno

Para as duas primeiras funções de membro, um iterador abordando o primeiro caractere após o último caractere removido pela função de membro. Para a função de terceiro membro, uma referência ao objeto string do qual os elementos foram apagados.

Observações

A função de terceiro membro retorna *this.

Exemplo

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

Pesquisa uma cadeia de caracteres em uma direção direta para a primeira ocorrência de uma substring que corresponde a uma sequência especificada de caracteres.

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;

Parâmetros

char_value
O valor do caractere para o qual a função de membro deve pesquisar.

offset
Índice da posição em que a pesquisa deve começar.

ptr
A cadeia de caracteres C para a qual a função de membro deve pesquisar.

count
O número de caracteres, contando para frente a partir do primeiro caractere, na cadeia de caracteres C para a qual a função de membro deve pesquisar.

str
A cadeia de caracteres para a qual a função de membro deve pesquisar.

Valor de retorno

O índice do primeiro caractere da substring pesquisada quando bem-sucedida; caso contrário npos.

Exemplo

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

Procura através de uma cadeia de caracteres o primeiro caractere que não é um elemento de uma cadeia de caracteres especificada.

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;

Parâmetros

char_value
O valor do caractere para o qual a função de membro deve pesquisar.

offset
Índice da posição em que a pesquisa deve começar.

ptr
A cadeia de caracteres C para a qual a função de membro deve pesquisar.

count
O número de caracteres, contando para frente a partir do primeiro caractere, na cadeia de caracteres C para a qual a função de membro deve pesquisar.

str
A cadeia de caracteres para a qual a função de membro deve pesquisar.

Valor de retorno

O índice do primeiro caractere da substring pesquisada quando bem-sucedida; caso contrário npos.

Exemplo

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

Procura através de uma cadeia de caracteres o primeiro caractere que corresponde a qualquer elemento de uma cadeia de caracteres especificada.

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;

Parâmetros

char_value
O valor do caractere para o qual a função de membro deve pesquisar.

offset
Índice da posição em que a pesquisa deve começar.

ptr
A cadeia de caracteres C para a qual a função de membro deve pesquisar.

count
O número de caracteres, contando para frente a partir do primeiro caractere, na cadeia de caracteres C para a qual a função de membro deve pesquisar.

str
A cadeia de caracteres para a qual a função de membro deve pesquisar.

Valor de retorno

O índice do primeiro caractere da substring pesquisada quando bem-sucedida; caso contrário npos.

Exemplo

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

Procura através de uma cadeia de caracteres o último caractere que não é qualquer elemento de uma cadeia de caracteres especificada.

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;

Parâmetros

char_value
O valor do caractere para o qual a função de membro deve pesquisar.

offset
Índice da posição em que a pesquisa deve terminar.

ptr
A cadeia de caracteres C para a qual a função de membro deve pesquisar.

count
O número de caracteres, contando para frente a partir do primeiro caractere, na cadeia de caracteres C para a qual a função de membro deve pesquisar.

str
A cadeia de caracteres para a qual a função de membro deve pesquisar.

Valor de retorno

O índice do primeiro caractere da substring pesquisada quando bem-sucedida; caso contrário npos.

Exemplo

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

Procura através de uma cadeia de caracteres o último caractere que corresponde a qualquer elemento de uma cadeia de caracteres especificada.

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;

Parâmetros

char_value
O valor do caractere para o qual a função de membro deve pesquisar.

offset
Índice da posição em que a pesquisa deve terminar.

ptr
A cadeia de caracteres C para a qual a função de membro deve pesquisar.

count
O número de caracteres, contando para frente a partir do primeiro caractere, na cadeia de caracteres C para a qual a função de membro deve pesquisar.

str
A cadeia de caracteres para a qual a função de membro deve pesquisar.

Valor de retorno

O índice do último caractere da substring pesquisada quando bem-sucedida; caso contrário npos.

Exemplo

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

Retorna uma referência ao primeiro elemento de uma cadeia de caracteres.

const_reference front() const;

reference front();

Valor de retorno

Uma referência ao primeiro elemento da cadeia de caracteres, que deve ser não-vazio.

Observações

basic_string::get_allocator

Retorna uma cópia do objeto alocador usado para construir a cadeia de caracteres.

allocator_type get_allocator() const;

Valor de retorno

O alocador usado pela cadeia de caracteres.

Observações

A função member retorna o objeto alocador armazenado.

Os alocadores para a classe string especificam como a classe gerencia o armazenamento. Os alocadores padrão fornecidos com classes de contêiner são suficientes para a maioria das necessidades de programação. Escrever e usar sua própria classe de alocador é um recurso avançado de C++.

Exemplo

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

Insere um elemento, vários elementos ou um intervalo de elementos na cadeia de caracteres em uma posição especificada.

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,
    value_type char_value);

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);

Parâmetros

position
O índice da posição atrás do ponto de inserção dos novos caracteres.

ptr
A cadeia de caracteres C a ser total ou parcialmente inserida na cadeia de caracteres.

count
O número de caracteres a serem inseridos.

str
A cadeia de caracteres a ser total ou parcialmente inserida na cadeia de caracteres de destino.

offset
O índice da parte da cadeia de caracteres de origem que fornece os caracteres a serem acrescentados.

char_value
O valor do caractere dos elementos a serem inseridos.

iter
Um iterador abordando a posição atrás da qual um caractere deve ser inserido.

first
Um iterador de entrada, const_pointerou const_iterator endereçando o primeiro elemento no intervalo de origem a ser inserido.

last
Um iterador de entrada, const_pointerou const_iterator endereçando a posição do que está além do último elemento no intervalo de origem a ser inserido.

Valor de retorno

As funções que retornam um valor retornam:

  • Uma referência ao basic_string que contém a cadeia de caracteres original mais os novos caracteres.
  • Um iterador no início do(s) caractere(s) inserido(s).

Exemplo

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

Um tipo que fornece um iterador de acesso aleatório que pode acessar e ler um const elemento na cadeia de caracteres.

typedef implementation-defined iterator;

Observações

Um tipo iterator pode ser usado para modificar o valor de um caractere e é usado para iterar através de uma cadeia de caracteres em uma direção para frente.

Exemplo

Veja o exemplo para begin obter um exemplo de como declarar e usar iterator.

basic_string::length

Retorna o número atual de elementos em uma cadeia de caracteres.

size_type length() const;

Observações

A função de membro é a mesma que size.

Exemplo

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

Retorna o número máximo de caracteres que uma cadeia de caracteres poderia conter.

size_type max_size() const;

Valor de retorno

O número máximo de caracteres que uma cadeia de caracteres pode conter.

Observações

Uma exceção do tipo length_error Class é lançada quando uma operação produz uma cadeia de caracteres com um comprimento maior do que o tamanho máximo.

Exemplo

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

Um valor integral não assinado inicializado para -1 que indica "não encontrado" ou "todos os caracteres restantes" quando uma função de pesquisa falha.

static const size_type npos = -1;

Observações

Quando o valor de retorno deve ser verificado para o npos valor, ele pode não funcionar a menos que o valor de retorno seja do tipo size_type e não de um int ou unsigned.

Exemplo

Veja o exemplo para find obter um exemplo de como declarar e usar npos.

basic_string::operator+=

Acrescenta caracteres a uma cadeia de caracteres.

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);

Parâmetros

char_value
O caractere a ser acrescentado.

ptr
Os caracteres da cadeia de caracteres C a ser acrescentada.

right
Os caracteres da cadeia de caracteres a ser acrescentada.

Valor de retorno

Uma referência ao objeto string que está sendo acrescentado com os caracteres passados pela função member.

Observações

Os caracteres podem ser acrescentados a uma cadeia de caracteres usando as operator+= funções ou as funções append de membro ou push_back. O operator+= acrescenta valores de argumento único, enquanto a função de membro acréscimo de argumento múltiplo permite que uma parte específica de uma cadeia de caracteres seja especificada para adição.

Exemplo

// 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 string 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 string str1 is: Hello Wide World.

basic_string::operator=

Atribui novos valores de caractere ao conteúdo de uma cadeia de caracteres.

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);

Parâmetros

char_value
O valor do caractere a ser atribuído.

ptr
Um ponteiro para os caracteres da cadeia de caracteres C a ser atribuída à cadeia de caracteres de destino.

right
A cadeia de caracteres de origem cujos caracteres devem ser atribuídos à cadeia de caracteres de destino.

Valor de retorno

Uma referência ao objeto string que está sendo atribuído novos caracteres pela função member.

Observações

As cadeias de caracteres podem receber novos valores de caracteres. O novo valor pode ser uma cadeia de caracteres e uma cadeia de caracteres C ou um único caractere. O operator= pode ser usado se o novo valor pode ser descrito por um único parâmetro, caso contrário, a função assignmembro , que tem vários parâmetros, pode ser usada para especificar qual parte da cadeia de caracteres deve ser atribuída a uma cadeia de caracteres de destino.

Exemplo

// 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[]

Fornece uma referência ao caractere com um índice especificado em uma cadeia de caracteres.

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

Parâmetros

offset
O índice da posição do elemento a ser referenciado.

Valor de retorno

Uma referência ao caractere da cadeia de caracteres na posição especificada pelo índice do parâmetro.

Observações

O primeiro elemento da cadeia de caracteres tem um índice de zero, e os seguintes elementos são indexados consecutivamente pelos inteiros positivos. Isso significa que uma cadeia de comprimento n tem um nésimo elemento indexado pelo número n - 1.

operator[] é mais rápido do que a função at de membro para fornecer acesso de leitura e gravação aos elementos de uma cadeia de caracteres.

operator[] não verifica se o índice passado como parâmetro é válido, mas a função at de membro faz e por isso deve ser usada na validade não é certo. Um índice inválido (um índice menor que zero ou maior que ou igual ao tamanho da cadeia de caracteres) passado para a função at de membro gera uma out_of_range exceção de classe. Um índice inválido passado para operator[] resulta em comportamento indefinido, mas o índice igual ao comprimento da cadeia de caracteres é um índice válido para cadeias de caracteres const e o operador retorna o caractere nulo quando passado esse índice.

A referência retornada pode ser invalidada por realocações de cadeia de caracteres ou modificações para as não-stringsconst .

Ao compilar com _ITERATOR_DEBUG_LEVEL definido como 1 ou 2, ocorrerá um erro de tempo de execução se você tentar acessar um elemento fora dos limites da cadeia de caracteres. Para obter mais informações, consulte Iteradores verificados.

Exemplo

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

Um tipo que fornece um ponteiro para um elemento de caractere em uma cadeia de caracteres ou matriz de caracteres.

typedef typename allocator_type::pointer pointer;

Observações

O tipo é sinônimo de allocator_type::pointer.

Para o tipo string, é equivalente a char *.

Exemplo

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

Apaga o último elemento da cadeia de caracteres.

void pop_back();

Observações

Esta função de membro efetivamente chama erase(size() - 1) para apagar o último elemento da sequência, que deve ser não-vazio.

basic_string::push_back

Adiciona um elemento ao final da cadeia de caracteres.

void push_back(value_type char_value);

Parâmetros

char_value
O caractere a ser adicionado ao final da cadeia de caracteres.

Observações

A função de membro efetivamente chama insert( end, char_value ). Para obter mais informações, consulte insert e end.

Exemplo

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

Retorna um iterador para o primeiro elemento em uma cadeia de caracteres invertida.

const_reverse_iterator rbegin() const;

reverse_iterator rbegin();

Valor de retorno

Retorna um iterador de acesso aleatório para o primeiro elemento em uma cadeia de caracteres invertida, abordando o que seria o último elemento na cadeia de caracteres não revertida correspondente.

Observações

rbegin é usado com uma string invertida assim como begin é usado com uma string.

Se o valor de retorno de rbegin for atribuído a um const_reverse_iterator, o objeto string não poderá ser modificado. Se o valor de retorno de rbegin for atribuído a um reverse_iterator, o objeto string poderá ser modificado.

rbegin pode ser usado para inicializar uma iteração através de uma cadeia de caracteres para trás.

Exemplo

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

Um tipo que fornece uma referência a um elemento armazenado em uma cadeia de caracteres.

typedef typename allocator_type::reference reference;

Observações

Um tipo reference pode ser usado para modificar o valor de um elemento.

O tipo é sinônimo de allocator_type::reference.

Para o tipo string, é equivalente a chr&.

Exemplo

Veja o exemplo para at obter um exemplo de como declarar e usar reference.

basic_string::rend

Retorna um iterador que aborda o local que sucede o último elemento em uma cadeia de caracteres invertida.

const_reverse_iterator rend() const;

reverse_iterator rend();

Valor de retorno

Um iterador de acesso aleatório reverso que aborda o local que sucede o último elemento em uma cadeia de caracteres invertida.

Observações

rend é usado com uma string invertida assim como end é usado com uma string.

Se o valor de retorno de rend for atribuído a um const_reverse_iterator, o objeto string não poderá ser modificado. Se o valor de retorno de rend for atribuído a um reverse_iterator, o objeto string poderá ser modificado.

rend pode ser usado para testar se um iterador reverso atingiu o final de sua cadeia de caracteres.

O valor retornado por rend não deve ser desreferenciado.

Exemplo

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

Substitui elementos em uma cadeia de caracteres em uma posição especificada por caracteres especificados ou por caracteres copiados de outros intervalos, cadeias de caracteres ou cadeias de caracteres C.

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);

Parâmetros

str
A cadeia de caracteres que deve ser uma fonte de caracteres para a cadeia de caracteres do operando.

position_1
O índice da cadeia de caracteres do operando na qual a substituição começa.

number_1
O número máximo de caracteres a serem substituídos na cadeia de caracteres do operando.

position_2
O índice da cadeia de caracteres de parâmetro na qual a cópia começa.

number_2
O número máximo de caracteres a serem usados a partir do parâmetro C-string.

ptr
A cadeia de caracteres C que deve ser uma fonte de caracteres para a cadeia de caracteres do operando.

char_value
O caractere a ser copiado para a cadeia de caracteres do operando.

first0
Um iterador endereçando o primeiro caractere a ser removido na cadeia de caracteres do operando.

last0
Um iterador endereçando o último caractere a ser removido na cadeia de caracteres do operando.

first
Um iterador, const_pointer ou const_iterator endereçando o primeiro caractere a ser copiado na cadeia de parâmetros.

last
Um iterador, const_pointer ou const_iterator endereçando o último caractere a ser copiado na cadeia de parâmetros.

count
O número de vezes char_value é copiado para a cadeia de caracteres do operando.

Valor de retorno

A cadeia de caracteres do operando com a substituição feita.

Exemplo

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

Define a capacidade da cadeia de caracteres como um número pelo menos tão grande quanto um número especificado.

void reserve(size_type count = 0);

Parâmetros

count
O número de caracteres para os quais a memória está sendo reservada.

Observações

Dispor de capacidade suficiente é importante porque a reafectação é um processo moroso. Além disso, invalida todas as referências, ponteiros e iteradores que se referem a caracteres em uma cadeia de caracteres.

O conceito de capacidade para tipos de objeto string é o mesmo que para objetos do tipo vector. Ao contrário vectorde , a função reserve de membro pode ser chamada para reduzir a capacidade de um objeto. O pedido não é vinculativo e pode ou não acontecer. Como o valor padrão para o parâmetro é zero, uma chamada de é uma solicitação não vinculativa para reduzir a capacidade da cadeia de caracteres para ajustar o número de caracteres atualmente na cadeia de reserve caracteres. A capacidade nunca é reduzida abaixo do número atual de caracteres.

Chamar reserve é a única maneira possível de reduzir a capacidade de uma cadeia de caracteres. No entanto, como mencionado acima, este pedido não é vinculativo e pode não acontecer.

Exemplo

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

Especifica um novo tamanho para uma cadeia de caracteres, anexando ou apagando elementos conforme necessário.

void resize(
    size_type count);

void resize(
    size_type count,
    value_type char_value);

Parâmetros

count
O novo tamanho da cadeia de caracteres.

char_value
O valor com o qual os caracteres acrescentados são inicializados, se mais elementos forem necessários.

Observações

Se o tamanho resultante exceder o número máximo de caracteres, o formulário lançará length_error.

Exemplo

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

Um tipo que fornece uma referência a um elemento armazenado em uma cadeia de caracteres.

typedef std::reverse_iterator<iterator> reverse_iterator;

Observações

Um tipo reverse_iterator pode ser usado para modificar o valor de um caractere e é usado para iterar através de uma cadeia de caracteres ao contrário.

Exemplo

Veja o exemplo para rbegin obter um exemplo de como declarar e usar reverse_iterator.

basic_string::rfind

Pesquisa uma cadeia de caracteres em uma direção inversa para a primeira ocorrência de uma substring que corresponde a uma sequência especificada de caracteres.

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;

Parâmetros

char_value
O valor do caractere para o qual a função de membro deve pesquisar.

offset
Índice da posição em que a pesquisa deve começar.

ptr
A cadeia de caracteres C para a qual a função de membro deve pesquisar.

count
O número de caracteres, contando para frente a partir do primeiro caractere, na cadeia de caracteres C para a qual a função de membro deve pesquisar.

str
A cadeia de caracteres para a qual a função de membro deve pesquisar.

Valor de retorno

O índice da última ocorrência, quando pesquisada para trás, do primeiro caractere da substring quando bem-sucedida; caso contrário npos.

Exemplo

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

Descarta o excesso de capacidade da cadeia de caracteres.

void shrink_to_fit();

Observações

Esta função de membro elimina qualquer armazenamento desnecessário no recipiente.

basic_string::size

Retorna o número atual de elementos em uma cadeia de caracteres.

size_type size() const;

Valor de retorno

O comprimento da cadeia de caracteres.

Exemplo

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

Um tipo inteiro não assinado que pode representar o número de elementos e índices em uma cadeia de caracteres.

typedef typename allocator_type::size_type size_type;

Observações

é equivalente a allocator_type::size_type.

Para o tipo string, é equivalente a size_t.

Exemplo

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

Verifique se a cadeia de caracteres começa com o prefixo especificado.

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;

Parâmetros

c
O prefixo de caractere único a ser procurado.

sv
Uma exibição de cadeia de caracteres que contém o prefixo a ser procurado.
Você pode passar um std::basic_string, que converte em uma exibição de cadeia de caracteres.

x
Cadeia de caracteres terminada em nulo que contém o prefixo a ser procurado.

Valor de retorno

true se a cadeia de caracteres começar com o prefixo especificado; false caso contrário.

Observações

starts_with() é novo no C++20. Para usá-lo, especifique a opção de compilador /std:c++20 ou posterior.

Consulte ends_with para ver se uma cadeia de caracteres termina com o sufixo especificado.

Exemplo

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

Copia uma substring de, no máximo, algum número de caracteres de uma cadeia de caracteres que começa a partir de uma posição especificada.

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

Parâmetros

offset
Um índice que localiza o elemento na posição a partir da qual a cópia da cadeia de caracteres é feita, com um valor padrão de 0.

count
O número de caracteres que devem ser copiados se estiverem presentes.

Valor de retorno

Um objeto de substring que é uma cópia de elementos do operando de cadeia de caracteres, começando na posição especificada pelo primeiro argumento.

Exemplo

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

Troque o conteúdo de duas cadeias de caracteres.

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

Parâmetros

str
A cadeia de caracteres de origem cujos elementos devem ser trocados com os da cadeia de caracteres de destino.

Observações

Se as cadeias de caracteres que estão sendo trocadas tiverem o mesmo objeto alocador, a swap função membro:

  • Ocorre em tempo constante.
  • Não há exceções.
  • Não invalida referências, ponteiros ou iteradores que designem elementos nas duas cadeias de caracteres.

Caso contrário, ele faz atribuições de elementos e chamadas de construtor proporcionais ao número de elementos nas duas sequências controladas.

Exemplo

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

Um tipo para os traços de caractere dos elementos armazenados em uma cadeia de caracteres.

typedef Traits traits_type;

Observações

O tipo é um sinônimo para o segundo parâmetro Traitsde modelo .

Para o tipo string, é equivalente a char_traits<char>.

Exemplo

Veja o exemplo para copy obter um exemplo de como declarar e usar traits_type.

basic_string::value_type

Um tipo que representa o tipo de caracteres armazenados em uma cadeia de caracteres.

typedef typename allocator_type::value_type value_type;

Observações

É equivalente a traits_type::char_type e é equivalente a char para objetos do tipo string.

Exemplo

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

Ver também

<string>
Segurança de threads na biblioteca padrão C++