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.
string_view
para elementos do tipochar
wstring_view
, parawchar_t
u16string_view
parachar16_t
u32string_view
parachar32_t
.
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_view s 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_with C++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_with C++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 questrv
ouptr
- Zero se as duas sequências de caracteres forem iguais
- Um valor positivo se
basic_string_view
for maior questrv
ouptr
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_view
nã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_view
s, 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
.