Por que usar string_view
Evite cópias de strings
Por que usar string_view é uma aula grátis de C++ Academy no CoddyKit. Esta é a aula 1 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de C++ Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de C++ Academy inclui 4 aulas no total.
O Custo das Cópias
Passar std::string por valor copia todo o conteúdo armazenado. Para acesso somente leitura, essa cópia é trabalho desperdiçado. std::string_view é uma visão leve e não proprietária: apenas um ponteiro e um comprimento. Inclua <string_view>.
#include <iostream>
#include <string_view>
int main() {
std::string_view sv = "hello";
std::cout << sv << " len=" << sv.size() << "\n";
}O que uma Visão Armazena
Uma string_view armazena apenas um ponteiro para caracteres existentes e um comprimento. Ela não é proprietária dos dados nem os copia.
#include <iostream>
#include <string>
#include <string_view>
int main() {
std::string s = "world";
std::string_view sv = s; // views s, no copy
std::cout << sv << "\n";
}Parâmetros Somente para Leitura
Aceitar std::string_view significa que sua função funciona com std::string, literais de texto e vetores de char, sem copiar nenhum deles.
#include <iostream>
#include <string_view>
void greet(std::string_view name) {
std::cout << "Hi, " << name << "\n";
}
int main() {
greet("Ada");
greet(std::string("Bob"));
}Sem Alocação
Criar uma visão nunca aloca memória, portanto ela é barata de copiar e de passar por valor.
#include <iostream>
#include <string_view>
int main() {
std::string_view a = "constant text";
std::string_view b = a; // trivial copy
std::cout << (a == b) << "\n";
}Substrings Baratas
substr em uma visão retorna outra visão para a mesma memória; nenhum caractere é copiado.
#include <iostream>
#include <string_view>
int main() {
std::string_view sv = "abcdef";
std::cout << sv.substr(2, 3) << "\n"; // cde
}Comparando a Intenção de Desempenho
Para funções que apenas inspecionam texto, string_view evita tanto a alocação de memória quanto a cópia, o que é importante em laços de alta frequência e na análise sintática.
Comprimento e Indexação
Uma visão oferece a interface familiar: size(), empty(), indexação e iteração baseada em intervalos.
#include <iostream>
#include <string_view>
int main() {
std::string_view sv = "C++";
for (char c : sv) std::cout << c << "-";
std::cout << "\n" << sv.size() << "\n";
}As Visões São Somente para Leitura
Você não pode modificar caracteres por meio de uma string_view; ela concede apenas acesso de leitura. Para modificar o texto, você precisa da string proprietária.
Do Literal à Visão
Literais de texto são convertidos diretamente em visões, o que torna extremamente barato passar texto constante.
#include <iostream>
#include <string_view>
using namespace std::string_view_literals;
int main() {
auto sv = "literal"sv;
std::cout << sv.size() << "\n";
}Não Substitui string
Use std::string quando precisar ser proprietário do texto, armazená-lo ou modificá-lo. Use std::string_view para parâmetros temporários e somente para leitura.
ressalva sobre o Tempo de Vida
Como uma visão não é proprietária dos dados, os caracteres subjacentes precisam sobreviver à visão. O uso incorreto causa visões pendentes, um assunto abordado em uma lição posterior.
Verificação Rápida
Verifique sua compreensão do motivo da existência de string_view.
Recapitulação
Você aprendeu por que string_view existe:
- É uma visão não proprietária formada por um ponteiro e um comprimento.
- Aceitá-la evita cópias e alocações para textos somente para leitura.
- Funciona com strings, literais e vetores de
char. - Os dados observados precisam sobreviver à visão.
Perguntas Frequentes
A aula “Por que usar string_view” é grátis?
Sim — o texto completo de “Por que usar string_view” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de C++ Academy, atualize para CoddyKit PRO. O curso de C++ Academy inclui 4 aulas no total.
O que vou aprender em “Por que usar string_view”?
Evite cópias de strings Você pratica C++ Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar C++ Academy?
Nenhuma experiência prévia é necessária. C++ Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 1 de 4.
Quanto tempo leva a aula “Por que usar string_view”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de C++ Academy?
Sim. Cada aula de C++ Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Por que usar string_view
- Criação de visualizações
- Armadilhas e tempos de vida
- Algoritmos de strings