0Pricing
C++ Academy · Aula

std::string versus matrizes de caracteres no estilo C

Compare std::string moderno com matrizes de caracteres legadas terminadas em nulo e decida quando usar cada um.

std::string versus matrizes de caracteres no estilo C é 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.

Duas formas de armazenar texto

O C++ herda as strings no estilo C — matrizes de char terminadas em nulo — e adiciona std::string da biblioteca padrão. Quase sempre use std::string.

Strings no estilo C

Uma string no estilo C é uma sequência de char terminada por um byte nulo '\0'. Funções como strlen percorrem a matriz até encontrar o nulo.

const char* greeting = "Hello";
// Memory: H, e, l, l, o, \0  (6 bytes)

#include <cstring>
std::cout << std::strlen(greeting);  // 5

std::string

std::string gerencia a própria memória e cresce conforme necessário. Construa-a como qualquer outro tipo.

#include <string>
std::string name = "Ada";
name += " Lovelace";
std::cout << name;  // Ada Lovelace

Tamanho e comprimento

std::string::size() e length() são sinônimos e retornam o número de caracteres (sem incluir o terminador nulo).

std::string s = "hello";
std::cout << s.size();   // 5
std::cout << s.length(); // 5

Acesso por índice

Leia ou escreva caracteres com [] ou at(). Diferentemente de [], at() lança uma exceção se o índice estiver fora do intervalo.

std::string s = "cat";
char first = s[0];        // 'c'
char last  = s.at(2);     // 't'
// s.at(10) throws std::out_of_range

Strings vazias

Use empty() em vez de size() == 0. É mais claro e igualmente rápido.

Quando usar const char*

Use uma string no estilo C quando:

  • Estiver fazendo a interface com bibliotecas C ou APIs do sistema operacional
  • Estiver trabalhando com literais de string que nunca mudam
  • Estiver usando sistemas embarcados nos quais a biblioteca padrão não estiver disponível

Convertendo entre elas

Obtenha uma string C de uma std::string com .c_str(). Construa uma std::string diretamente a partir de um const char*.

std::string s = "Hello";
const char* c = s.c_str();

const char* literal = "world";
std::string s2(literal);

Literais de string são const char[]

Um literal de string como "hi" tem o tipo const char[3] (incluindo o terminador nulo). Ele fica armazenado em memória somente para leitura.

Literais de string brutos

Use o prefixo R"(...)" para ignorar o processamento de escapes. Isso é útil para padrões de expressões regulares e caminhos de arquivos.

std::string regex = R"(\d+\.\d{2})";
std::string path  = R"(C:\Users\Ada)";

Percorrendo uma std::string

Strings são contêineres. Percorra-as com um for baseado em intervalo, índices ou iteradores.

std::string s = "abc";
for (char c : s) std::cout << c << " ";  // a b c

Verificação rápida

Qual método de std::string lança uma exceção quando o índice está fora do intervalo?

Recapitulação

Prefira std::string para texto gerenciado. Use const char* para literais e para interoperabilidade com APIs C. Converta entre eles com .c_str() e a construção direta.

Perguntas Frequentes

A aula “std::string versus matrizes de caracteres no estilo C” é grátis?

Sim — o texto completo de “std::string versus matrizes de caracteres no estilo C” é 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 “std::string versus matrizes de caracteres no estilo C”?

Compare std::string moderno com matrizes de caracteres legadas terminadas em nulo e decida quando usar cada um. 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 “std::string versus matrizes de caracteres no estilo C”?

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. std::string versus matrizes de caracteres no estilo C
  2. Operações com cadeias: concatenação, substr, busca e substituição
  3. Fluxo de cadeias stringstream para análise
  4. Conversões de cadeias: to_string e stoi
← Voltar para C++ Academy