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); // 5std::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 LovelaceTamanho 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(); // 5Acesso 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_rangeStrings 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 cVerificaçã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
- std::string versus matrizes de caracteres no estilo C
- Operações com cadeias: concatenação, substr, busca e substituição
- Fluxo de cadeias stringstream para análise
- Conversões de cadeias: to_string e stoi