0Pricing
C++ Academy · Aula

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

  1. Por que usar string_view
  2. Criação de visualizações
  3. Armadilhas e tempos de vida
  4. Algoritmos de strings
← Voltar para C++ Academy