Classe basic_string_view

O modelo de classe basic_string_view<charT> foi adicionado no C++17 para servir como uma maneira segura e eficiente em que uma função aceita vários tipos de cadeia de caracteres não relacionados sem que a função precise usar como modelo um desses tipos. A classe contém um ponteiro não proprietário para uma sequência contígua de dados de caractere e um comprimento que especifica o número de caracteres na sequência. Nenhuma suposição é feita sobre se a sequência é terminada em nulo.

A biblioteca padrão define várias especializações com base no tipo dos elementos:

  • string_view
  • wstring_view
  • u16string_view
  • u32string_view

Uma basic_string_view descreve a interface comum mínima necessária para ler dados de cadeia de caracteres. Ela fornece acesso const aos dados subjacentes; não faz cópias (exceto para a função copy). Os dados podem ou não conter valores nulos (\0) em qualquer posição. Uma basic_string_view não tem controle sobre o tempo de vida do objeto. É responsabilidade do chamador garantir que os dados de cadeia de caracteres subjacentes sejam válidos.

Uma função que aceita um parâmetro de tipo string_view pode ser feita para trabalhar com qualquer tipo de cadeia de caracteres, sem transformar a função em um modelo ou restringir a função a um subconjunto específico de tipos de cadeia de caracteres. O único requisito é que exista uma conversão implícita do tipo de cadeia de caracteres para string_view. Todos os tipos de cadeia de caracteres padrão são implicitamente conversíveis em uma string_view, que contenha o mesmo tipo de elemento. Em outras palavras, uma std::string é conversível para uma string_view, mas não para uma wstring_view.

O exemplo a seguir mostra uma função f não modelo que usa um parâmetro do tipo wstring_view. Ela pode ser chamada com argumentos do tipo std::wstring, wchar_t* e winrt::hstring.

// compile with: /std:c++17
// string_view that uses elements of wchar_t
void f(wstring_view);

// pass a std::wstring:
const std::wstring& s { L"Hello" };
f(s);

// pass a C-style null-terminated string (string_view is not null-terminated):
const wchar_t* ns = L"Hello";
f(ns);

// pass a C-style character array of len characters (excluding null terminator):
const wchar_t* cs { L"Hello" };
size_t len { 5 };
f({cs,len});

// pass a WinRT string
winrt::hstring hs { L"Hello" };
f(hs);

Sintaxe

template <class CharType, class Traits = char_traits<CharType>>
class basic_string_view;

Parâmetros

CharType
O tipo dos caracteres armazenados na basic_string_view. A Biblioteca Padrão do C++ fornece os seguintes typedefs para especializações desse modelo.

Traits
Assume o padrão de char_traits<CharType>.

Construtores

Construtor Descrição
basic_string_view Constrói um basic_string_view que está vazio ou então aponta para todos ou parte dos dados de algum outro objeto de cadeia de caracteres ou para uma matriz de caracteres no estilo C.

Typedefs

Nome do tipo Descrição
const_iterator Iterador de acesso aleatório que pode ler elementos const.
const_pointer using const_pointer = const value_type*;
const_reference using const_reference = const value_type&;
const_reverse_iterator using const_reverse_iterator = std::reverse_iterator<const_iterator>;
difference_type using difference_type = ptrdiff_t;
iterator using iterator = const_iterator;
npos static constexpr size_type npos = size_type(-1);
pointer using pointer = value_type*;
reference using reference = value_type&;
reverse_iterator using reverse_iterator = const_reverse_iterator;
size_type using size_type = size_t;
traits_type using traits_type = Traits;
value_type using value_type = CharType;

Operadores membro

Operador Descrição
operator= Atribui um basic_string_view ou objeto de cadeia de caracteres conversível a outro basic_string_view.
operator[] Retorna o elemento no índice especificado.

Funções de membro

Função de membro Descrição
at Retorna uma const_reference para o elemento em um local especificado.
back Retorna um const_reference para o último elemento.
begin Retorna um iterador const que trata o primeiro elemento. (basic_string_views são imutáveis).
cbegin Mesmo que begin.
cend Retorna um iterador const que aponta para um após o último elemento.
copy Copia, no máximo, um número específico de caracteres de uma posição indexada em uma basic_string_view de origem em um conjunto de caracteres de destino. (Não recomendado. Use _Copy_s em vez disso).
_Copy_s Função de cópia CRT segura.
compare Compara uma basic_string_view com uma basic_string_view especificada para determinar se são iguais ou se uma é lexicograficamente menor que a outra.
crbegin Mesmo que rbegin.
crend Mesmo que rend.
data Retorna um ponteiro não proprietário bruto para a sequência de caracteres.
empty Testa se a basic_string_view contém caracteres.
end Mesmo que cend.
ends_withC++20 Verificar se uma exibição de cadeia de caracteres termina com um sufixo especificado.
find Pesquisa para a frente pela primeira ocorrência de uma substring que corresponde a uma sequência de caracteres especificada.
find_first_not_of Pesquisa pelo primeiro caractere que não seja qualquer elemento de um objeto basic_string_view especificado ou conversível.
find_first_of Pesquisa pelo primeiro caractere que não corresponda a qualquer elemento de um objeto basic_string_view especificado ou conversível.
find_last_not_of Pesquisa pelo último caractere que não seja qualquer elemento de um objeto basic_string_view especificado ou conversível.
find_last_of Pesquisa pelo último caractere que seja um elemento de um objeto basic_string_view especificado ou conversível.
front Retorna um const_reference para o primeiro elemento.
length Retorna o número de elementos atual.
max_size Retorna o número máximo de caracteres que uma basic_string_view pode conter.
rbegin Retorna um iterador const que trata o primeiro elemento em um basic_string_view invertido.
remove_prefix Move o ponteiro para a frente pelo número especificado de elementos.
remove_suffix Reduz o tamanho da exibição pelo número especificado de elementos começando pela parte de trás.
rend Retorna um iterador const que aponta para um após o último elemento em um basic_string_view invertido.
rfind Pesquisa um basic_string_view invertido pela primeira ocorrência de uma substring que corresponde a uma sequência de caracteres especificada.
size Retorna o número de elementos atual.
starts_withC++20 Verificar se uma exibição de cadeia de caracteres começa com um determinado prefixo.
substr Retorna uma substring de um comprimento especificado começando em um índice especificado.
swap Troca o conteúdo de dois objetos basic_string_view.

Comentários

Se for solicitado que uma função gere uma sequência mais longa que os elementos max_size, a função relatará um erro de comprimento, gerando um objeto do tipo length_error.

Requisitos

std:c++17 ou posterior.

Cabeçalho: <string_view>

Namespace: std

basic_string_view::at

Retorna a const_reference para o caractere no índice baseado em zero especificado.

constexpr const_reference at(size_type offset) const;

Parâmetros

offset
O índice do elemento a ser referenciado.

Valor retornado

Uma const_reference ao caractere na posição especificada pelo índice de parâmetro.

Comentários

O primeiro elemento da cadeia de caracteres tem um índice igual a zero e os elementos seguintes são indexados consecutivamente por inteiros positivos, para que uma basic_string_view, de comprimento n, tenha um *nº elemento indexado pelo de número n - 1. at gera uma exceção para índices inválidos, ao contrário de operator[].

Em geral, recomendamos que at para sequências como std::vector e basic_string_view nunca deve ser usado. Um índice inválido passado para uma sequência é um erro lógico que deve ser descoberto e corrigido durante o desenvolvimento. Se um programa não tiver certeza de que seus índices são válidos, ele deve testá-los, não chamar at() e contar com exceções para se defender contra programação descuidada.

Para obter mais informações, consulte basic_string_view::operator[].

Exemplo

// basic_string_view_at.cpp
// compile with: /EHsc
#include <string_view>
#include <iostream>

int main()
{
    using namespace std;

    const string_view  str1("Hello world");
    string_view::const_reference refStr2 = str1.at(8); // 'r'
}

basic_string_view::back

Retorna um const_reference para o último elemento.

constexpr const_reference back() const;

Valor retornado

Um const_reference para o último elemento na basic_string_view.

Comentários

Gera uma exceção se basic_string_view estiver vazio.

Tenha em mente que depois que um basic_string_view é modificado, por exemplo, chamando remove_suffix, o elemento retornado por essa função não é mais o último elemento nos dados subjacentes.

Exemplo

Um string_view que é construído com um literal de cadeia de caracteres C não inclui o nulo de terminação. Portanto, no exemplo a seguir, back retorna 'p' e não '\0'.

char c[] = "Help"; // char[5]
string_view sv{ c };
cout << sv.size(); // size() == 4
cout << sv.back() << endl; // p

Os nulos inseridos são tratados como qualquer outro caractere:

string_view e = "embedded\0nulls"sv;
cout << boolalpha << (e.back() == 's'); // true

basic_string_view::basic_string_view

Constrói um basic_string_view.

constexpr basic_string_view() noexcept;
constexpr basic_string_view(const basic_string_view&) noexcept = default;
constexpr basic_string_view(const charT* str);
constexpr basic_string_view(const charT* str, size_type len);

Parâmetros

str
O ponteiro para os valores de caractere.

len
O número de caracteres a serem incluídos na visualização.

Comentários

Os construtores com um parâmetro charT* pressupõem que a entrada termine em nulo, mas o nulo de encerramento não está incluído no basic_string_view.

Você também pode construir um basic_string_view com uma literal. Consulte operator"" sv.

basic_string_view::begin

Mesmo que cbegin.

constexpr const_iterator begin() const noexcept;

Valor retornado

Retorna um const_iterator que trata o primeiro elemento.

basic_string_view::cbegin

Retorna um const_iterator que trata o primeiro elemento no intervalo.

constexpr const_iterator cbegin() const noexcept;

Valor retornado

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

basic_string_view::cend

Retorna um const_iterator que trata o local logo após o último elemento em um intervalo.

constexpr const_iterator cend() const noexcept;

Valor retornado

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

Comentários

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

basic_string_view::compare

Realiza uma comparação que diferencia maiúsculas de minúsculas com uma basic_string_view especificada (ou um tipo de cadeia de caracteres conversível) para determinar se os dois objetos são iguais ou se um é lexicograficamente menor que o outro. Os <string_view> operadores usam a função de membro para fazer comparações.

constexpr int compare(basic_string_view strv) const noexcept;
constexpr int compare(size_type pos, size_type num, basic_string_view strv) const;
constexpr int compare(size_type pos, size_type num, basic_string_view strv, size_type offset, size_type num2) const;
constexpr int compare(const charT* ptr) const;
constexpr int compare(size_type pos, size_type num, const charT* ptr) const;
constexpr int compare(size_type pos, size_type num, const charT* ptr, size_type num2) const;

Parâmetros

strv
O basic_string_view que deve ser comparado a esse basic_string_view.

pos
O índice dessa basic_string_view na qual a comparação começa.

num
O número máximo de caracteres da basic_string_view a serem comparados.

num2
O número máximo de caracteres de strv a serem comparados.

offset
O índice de strv no qual a comparação começa.

ptr
A cadeia de caracteres C a ser comparada à basic_string_view.

Valor retornado

  • Um valor negativo se basic_string_view for menor que strv ou ptr
  • Zero se as duas sequências de caracteres forem iguais
  • Um valor positivo se basic_string_view for maior que strv ou ptr

Comentários

As funções membro compare fazem uma comparação que diferencia maiúsculas de minúsculas de toda ou parte de cada sequência de caracteres.

Exemplo

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

using namespace std;

string to_alpha(int result)
{
   if (result < 0) return " less than ";
   else if (result == 0) return " equal to ";
   else return " greater than ";
}

int main()
{
   // The first member function compares
   // two string_views
   string_view sv_A("CAB");
   string_view sv_B("CAB");
   cout << "sv_A is " << sv_A << endl;
   cout << "sv_B is " << sv_B << endl;
   int comp1 = sv_A.compare(sv_B);
   cout << "sv_A is" << to_alpha(comp1) << "sv_B.\n";

   // The second member function compares part of
   // an operand string_view to another string_view
   string_view sv_C("AACAB");
   string_view sv_D("CAB");
   cout << "sv_C is: " << sv_C << endl;
   cout << "sv_D is: " << sv_D << endl;
   int comp2a = sv_C.compare(2, 3, sv_D);
   cout << "The last three characters of sv_C are"
       << to_alpha(comp2a) << "sv_D.\n";

   int comp2b = sv_C.compare(0, 3, sv_D);
   cout << "The first three characters of sv_C are"
       << to_alpha(comp2b) << "sv_D.\n";

   // The third member function compares part of
   // an operand string_view to part of another string_view
   string_view sv_E("AACAB");
   string_view sv_F("DCABD");
   cout << "sv_E: " << sv_E << endl;
   cout << "sv_F is: " << sv_F << endl;
   int comp3a = sv_E.compare(2, 3, sv_F, 1, 3);
   cout << "The three characters from position 2 of sv_E are"
       << to_alpha(comp3a)
       << "the 3 characters of sv_F from position 1.\n";

   // The fourth member function compares
   // an operand string_view to a C string
   string_view sv_G("ABC");
   const char* cs_A = "DEF";
   cout << "sv_G is: " << sv_G << endl;
   cout << "cs_A is: " << cs_A << endl;
   int comp4a = sv_G.compare(cs_A);
   cout << "sv_G is" << to_alpha(comp4a) << "cs_A.\n";

   // The fifth member function compares part of
   // an operand string_view to a C string
   string_view sv_H("AACAB");
   const char* cs_B = "CAB";
   cout << "sv_H is: " << sv_H << endl;
   cout << "cs_B is: " << cs_B << endl;
   int comp5a = sv_H.compare(2, 3, cs_B);
   cout << "The last three characters of sv_H are"
      << to_alpha(comp5a) << "cs_B.\n";

   // The sixth member function compares part of
   // an operand string_view to part of an equal length of
   // a C string
   string_view sv_I("AACAB");
   const char* cs_C = "ACAB";
   cout << "sv_I is: " << sv_I << endl;
   cout << "cs_C: " << cs_C << endl;
   int comp6a = sv_I.compare(1, 3, cs_C, 3);
   cout << "The 3 characters from position 1 of sv_I are"
      << to_alpha(comp6a) << "the first 3 characters of cs_C.\n";
}
sv_A is CAB
sv_B is CAB
sv_A is equal to sv_B.
sv_C is: AACAB
sv_D is: CAB
The last three characters of sv_C are equal to sv_D.
The first three characters of sv_C are less than sv_D.
sv_E: AACAB
sv_F is: DCABD
The three characters from position 2 of sv_E are equal to the 3 characters of sv_F from position 1.
sv_G is: ABC
cs_A is: DEF
sv_G is less than cs_A.
sv_H is: AACAB
cs_B is: CAB
The last three characters of sv_H are equal to cs_B.
sv_I is: AACAB
cs_C: ACAB
The 3 characters from position 1 of sv_I are equal to the first 3 characters of cs_C.

basic_string_view::copy

Copia, no máximo, um número específico de caracteres de uma posição indexada em uma basic_string_view de origem em um conjunto de caracteres de destino. Em vez disso, é recomendado o uso da função basic_string_view::_Copy_s segura.

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

Parâmetros

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

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

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

Valor retornado

O número de caracteres copiados.

Comentários

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

basic_string_view::_Copy_s

Deve ser usada a função de cópia CRT segura em vez de copy.

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

Parâmetros

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

dest_size
O tamanho do dest.

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

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

Valor retornado

O número de caracteres copiados.

Comentários

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

Para obter mais informações, consulte c-runtime-library/security-features-in-the-crt.

basic_string_view::crbegin

Retorna um const_reverse_iterator que trata o primeiro elemento na basic_string_view invertida.

constexpr const_reverse_iterator crbegin() const noexcept;

Valor retornado

Um const_reverse_iterator que trata o primeiro elemento na basic_string_view invertida.

basic_string_view::crend

Mesmo que rend.

constexpr const_reverse_iterator crend() const noexcept;

Valor retornado

Retorna um const_reverse_iterator que trata um após o final de uma basic_string_view invertida.

basic_string_view::data

Retorna um ponteiro não proprietário bruto para a sequência de caracteres const do objeto que foi usado para construir o basic_string_view.

constexpr value_type *data() const noexcept;

Valor retornado

Um ponteiro para const para o primeiro elemento da sequência de caracteres.

Comentários

O ponteiro não pode modificar os caracteres.

Uma sequência de caracteres basic_string_view não é necessariamente encerrada em nulo. O tipo de retorno de data não é uma cadeia de caracteres do C válida, porque nenhum caractere nulo é acrescentado. O caractere nulo \0 não tem significado especial em um objeto de tipo basic_string_view e pode ser uma parte do objeto basic_string_view, como qualquer outro caractere.

basic_string_view::empty

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

constexpr bool empty() const noexcept;

Valor retornado

true se o objeto basic_string_view não contiver nenhum caractere, false se ele tiver pelo menos um caractere.

Comentários

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

basic_string_view::end

Retorna um acesso aleatório de const_iterator que aponta para um após o último elemento.

constexpr const_iterator end() const noexcept;

Valor retornado

Retorna um acesso aleatório de const_iterator que aponta para um após o último elemento.

Comentários

end é usado para testar se um basic_string_view atingiu o fim de seu const_iterator. O valor retornado por end não deve ser desreferenciado.

basic_string_view::ends_with

Verificar se a exibição de 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 buscado.

sv
Uma exibição de cadeia de caracteres que contém o sufixo a ser buscado.
Você pode passar um std::basic_string, que se converte em um basic_string_view.

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

Valor retornado

true se a exibição de cadeia de caracteres termina com o sufixo especificado; caso contrário, false.

Comentários

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

Consulte starts_with para verificar se uma exibição de 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::cout << std::boolalpha; // so booleans show as 'true'/'false'  
    std::cout << std::string_view("abcdefg").ends_with('g') << '\n';
    std::cout << std::string_view("abcdefg").ends_with("eFg") << '\n';

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

    return 0;
}
true
false
true

basic_string_view::find

Pesquisa uma basic_string_view para frente, em uma cadeia de caracteres, a primeira ocorrência de um caractere ou substring que corresponde a uma sequência de caracteres especificada.

constexpr size_type find(basic_string_view str, size_type offset = 0) const noexcept;
constexpr size_type find(charT chVal, size_type offset = 0) const noexcept;
constexpr size_type find(const charT* ptr, size_type offset, size_type count) const;
constexpr size_type find(const charT* ptr, size_type offset = 0) const;

Parâmetros

str
A basic_string_view que a função de membro deve pesquisar.

chVal
O valor de caractere que a função membro deve pesquisar.

offset
O índice no qual a pesquisa deve iniciar.

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

count
O número de caracteres em ptr, contando a partir do primeiro caractere.

Valor retornado

O índice do primeiro caractere da subsequência pesquisada quando for houver êxito, caso contrário, npos.

basic_string_view::find_first_not_of

Pesquisa pelo primeiro caractere que não seja qualquer elemento de um objeto basic_string_view especificado ou cadeia de caracteres conversível.

constexpr size_type find_first_not_of(basic_string_view str, size_type offset = 0) const noexcept;
constexpr size_type find_first_not_of(charT chVal, size_type offset = 0) const noexcept;
constexpr size_type find_first_not_of(const charT* ptr, size_type offset, size_type count) const;
constexpr size_type find_first_not_of(const charT* ptr, size_type offset = 0) const;

Parâmetros

str
A basic_string_view que a função de membro deve pesquisar.

chVal
O valor de caractere que a função membro deve pesquisar.

offset
O índice no qual a pesquisa deve iniciar.

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

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

Valor retornado

O índice do primeiro caractere da subsequência pesquisada quando for houver êxito, caso contrário, npos.

basic_string_view::find_first_of

Pesquisa, em uma cadeia de caracteres, o primeiro caractere que corresponda a qualquer elemento de uma basic_string_view especificada.

constexpr size_type find_first_of(basic_string_view str, size_type offset = 0) const noexcept;
constexpr size_type find_first_of(charT chVal, size_type offset = 0) const noexcept;
constexpr size_type find_first_of(const charT* str, size_type offset, size_type count) const;
constexpr size_type find_first_of(const charT* str, size_type offset = 0) const;

Parâmetros

chVal
O valor de caractere que a função membro deve pesquisar.

offset
O índice no qual a pesquisa deve iniciar.

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

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

str
A basic_string_view que a função de membro deve pesquisar.

Valor retornado

O índice do primeiro caractere da subsequência pesquisada quando for houver êxito, caso contrário, npos.

basic_string_view::find_last_not_of

Pesquisa pelo último caractere que não seja elemento de uma basic_string_view especificada.

constexpr size_type find_last_not_of(basic_string_view str, size_type offset = npos) const noexcept;
constexpr size_type find_last_not_of(charT chVal, size_type offset = npos) const noexcept;
constexpr size_type find_last_not_of(const charT* ptr, size_type offset, size_type count) const;
constexpr size_type find_last_not_of(const charT* ptr, size_type offset = npos) const;

Parâmetros

str
A basic_string_view que a função de membro deve pesquisar.

chVal
O valor de caractere que a função membro deve pesquisar.

offset
O índice no qual a pesquisa deve terminar.

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

count
O número de caracteres, contando a partir do primeiro caractere, em ptr.

Valor retornado

O índice do primeiro caractere da subsequência pesquisada quando for houver êxito, caso contrário, string_view::npos.

basic_string_view::find_last_of

Pesquisa pelo último caractere que corresponda a qualquer elemento de uma basic_string_view especificada.

constexpr size_type find_last_of(basic_string_view str, size_type offset = npos) const noexcept;
constexpr size_type find_last_of(charT chVal, size_type offset = npos) const noexcept;
constexpr size_type find_last_of(const charT* ptr, size_type offset, size_type count) const;
constexpr size_type find_last_of(const charT* ptr, size_type offset = npos) const;

Parâmetros

str
A basic_string_view que a função de membro deve pesquisar.

chVal
O valor de caractere que a função membro deve pesquisar.

offset
O índice no qual a pesquisa deve terminar.

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

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

Valor retornado

O índice do último caractere da subsequência pesquisada quando houver êxito, caso contrário, npos.

basic_string_view::front

Retorna um const_reference para o primeiro elemento.

constexpr const_reference front() const;

Valor retornado

Um const_reference para o primeiro elemento.

Comentários

Gera uma exceção se basic_string_view estiver vazio.

basic_string_view::length

Retorna o número de elementos atual.

constexpr size_type length() const noexcept;

Comentários

A função membro é igual a size.

basic_string_view::max_size

Retorna o número máximo de caracteres que uma basic_string_view pode conter.

constexpr size_type max_size() const noexcept;

Valor retornado

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

Comentários

Uma exceção de tipo length_error é gerada quando uma operação produz uma basic_string_view com um comprimento maior que max_size().

basic_string_view::operator=

Atribui um basic_string_view ou objeto de cadeia de caracteres conversível a outro basic_string_view.

constexpr basic_string_view& operator=(const basic_string_view&) noexcept = default;

Exemplo

   string_view s = "Hello";
   string_view s2 = s;

basic_string_view::operator[]

Fornece uma const_reference ao caractere com um índice especificado.

constexpr const_reference operator[](size_type offset) const;

Parâmetros

offset
O índice do elemento a ser referenciado.

Valor retornado

Uma const_reference ao caractere na posição especificada pelo índice de parâmetro.

Comentários

O primeiro elemento da cadeia de caracteres tem um índice igual a zero e os elementos seguintes são indexados consecutivamente por inteiros positivos, para que uma basic_string_view, de comprimento n, tenha um *nº elemento indexado pelo de número n-1.

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

operator[] não verifica se o índice passado como um argumento é válido. Um índice inválido passado para operator[] resulta em comportamento indefinido.

A referência retornada poderá ser invalidada se os dados de cadeia de caracteres subjacentes forem modificados ou excluídos pelo objeto proprietário.

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 basic_string_view. Para obter mais informações, consulte Iteradores verificados.

basic_string_view::rbegin

Retorna um iterador const para o primeiro elemento em um basic_string_view invertido.

constexpr const_reverse_iterator rbegin() const noexcept;

Valor retornado

Retorna um iterador de acesso aleatório para o primeiro elemento em uma basic_string_view invertida, indicando qual seria o último elemento na basic_string_viewnão invertida correspondente.

Comentários

rbegin é usado com um basic_string_view invertido, assim como begin é usado com um basic_string_view. rbegin pode ser usado para inicializar uma iteração no sentido inverso.

basic_string_view::remove_prefix

Move o ponteiro para a frente pelo número especificado de elementos.

constexpr void remove_prefix(size_type n);

Comentários

Deixa os dados subjacentes inalterados. Move o ponteiro basic_string_view para a frente por n elementos e define o membro de dados particulares size como size - n.

basic_string_view::remove_suffix

Reduz o tamanho da exibição pelo número especificado de elementos começando pela parte de trás.

constexpr void remove_suffix(size_type n);

Comentários

Deixa os dados subjacentes e o ponteiro para ele inalterados. Define o membro de dados particulares size como size - n.

basic_string_view::rend

Retorna um iterador const que aponta para um após o último elemento em um basic_string_view invertido.

constexpr reverse_iterator rend() const noexcept;

Valor retornado

Um iterador const de acesso aleatório reverso, que aponta para um elemento após o último em um basic_string_view invertido.

Comentários

rend é usado com um basic_string_view invertido, assim como end é usado com um basic_string_view. rend pode ser usado para testar se um iterador inverso chegou ao final de seu basic_string_view. O valor retornado por rend não deve ser desreferenciado.

basic_string_view::rfind

Pesquisa uma basic_string_view invertida por uma substring que corresponda a uma sequência de caracteres especificada.

constexpr size_type rfind(basic_string_view str, size_type offset = npos) const noexcept;
constexpr size_type rfind(charT chVal, size_type offset = npos) const noexcept;
constexpr size_type rfind(const charT* ptr, size_type offset, size_type count) const;
constexpr size_type rfind(const charT* ptr, size_type offset = npos) const;

Parâmetros

chVal
O valor de caractere que a função membro deve pesquisar.

offset
O índice no qual a pesquisa deve iniciar.

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

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

str
A basic_string_view que a função de membro deve pesquisar.

Valor retornado

O índice do primeiro caractere do substring quando for houver êxito; caso contrário, npos.

basic_string_view::size

Retorna o número de elementos no basic_string_view.

constexpr size_type size() const noexcept;

Valor retornado

O comprimento da basic_string_view.

Comentários

Uma basic_string_view pode modificar seu comprimento, por exemplo, por remove_prefix e remove_suffix. Como isso não modifica os dados subjacentes da cadeia de caracteres, o tamanho de uma basic_string_view não é necessariamente o tamanho dos dados subjacentes.

basic_string_view::starts_with

Verificar se a exibição de 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 buscado.

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

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

Valor retornado

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

Comentários

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

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

Exemplo

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

int main()
{
    std::cout << std::boolalpha; // so booleans show as 'true'/'false'  
    std::cout << std::string_view("abcdefg").starts_with('b') << '\n';
    std::cout << std::string_view("abcdefg").starts_with("aBc") << '\n';

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

    return 0;
}
false
false
true

basic_string_view::substr

Retorna um basic_string_view, que representa (no máximo) o número especificado de caracteres de uma posição especificada.

constexpr basic_string_view substr(size_type offset = 0, size_type count = npos) const;

Parâmetros

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

count
O número de caracteres a serem incluídos no substring, se eles estiverem presentes.

Valor retornado

Um objeto basic_string_view, que representa a subsequência especificada de elementos.

basic_string_view::swap

Troca dois basic_string_views, em outras palavras, os ponteiros para os dados de cadeia de caracteres subjacentes e os valores de tamanho.

constexpr void swap(basic_string_view& sv) noexcept;

Parâmetros

sv
A origem basic_string_view, cujos valores de ponteiro e tamanho devem ser trocados com os do destino basic_string_view.

Confira também

<string_view>
Acesso Thread-Safe na Biblioteca Padrão C++