Dominando Funções de String em C++: strcpy, strcat, strlen, strcmp – Exemplos Práticos
O que é uma String?
Uma string é simplesmente uma sequência de caracteres. Em C++ moderno, geralmente trabalhamos com objetos da classe std::string, que gerencia alocação de memória, redimensionamento e uma série de funções membro úteis automaticamente. Isso elimina a necessidade de gerenciamento manual de buffer e reduz o risco de buffer overflows.
Para fins educacionais, o C++ ainda suporta arrays de caracteres terminados em null no estilo C tradicional. Ambas as abordagens têm seu lugar: use std::string para programação cotidiana, e reserve strings estilo C para APIs legadas ou código de baixo nível crítico para performance.
Declarando Strings
- String de caracteres estilo C: array unidimensional de
charterminado por caractere null (\0). - std::string: classe da Biblioteca Padrão C++ que fornece interface rica para manipulação de strings.
String de Caracteres Estilo C
Exemplo:
char nome[5] = {'J', 'o', 'h', 'n', '\0'};
Ou mais concisamente:
char nome[] = "John"; // compilador insere o '\0' terminador
std::string
Para usar std::string, inclua o cabeçalho e declare uma variável:
#include <string>
std::string nome = "John";
Acessando Valores de String
Abaixo um programa simples de console que imprime uma string estilo C e um valor std::string.
#include <iostream>
#include <string>
using namespace std;
int main() {
char cNome[5] = "John"; // string estilo C
string cppNome = "Guru99"; // std::string
cout << "String estilo C: " << cNome << endl;
cout << "std::string: " << cppNome << endl;
return 0;
}
Principais Funções de String Estilo C
Estas funções são definidas no cabeçalho cstring. Elas operam em strings estilo C (arrays de char terminados em null).
strcpy()
Copia a string de origem para o buffer de destino. O destino deve ser grande o suficiente para conter a origem.
strcpy(dest, src); // dest deve ter espaço suficiente
strcat()
Anexa a string de origem ao final da string de destino. Novamente, o buffer de destino deve ser grande o suficiente para acomodar o resultado.
strcat(dest, src); // dest deve ter espaço suficiente
strlen()
Retorna o número de caracteres na string, excluindo o byte null terminador.
size_t len = strlen(str);
strcmp()
Compara duas strings lexicograficamente. Retorna 0 se iguais, valor negativo se a primeira for menor, e positivo se a primeira for maior.
int cmp = strcmp(str1, str2);
Exemplo Prático
#include <iostream>
#include <cstring>
using namespace std;
int main() {
char nome1[10] = "Guru99";
char nome2[10] = "John";
char nome3[20]; // Garante espaço para resultado concatenado
// Copia
strcpy(nome3, nome1);
cout << "strcpy(nome3, nome1): " << nome3 << endl;
// Concatena
strcat(nome1, nome2);
cout << "strcat(nome1, nome2): " << nome1 << endl;
// Comprimento
size_t len = strlen(nome1);
cout << "strlen(nome1): " << len << endl;
// Comparação
int cmp = strcmp(nome1, nome3);
cout << "strcmp(nome1, nome3): " << cmp << endl;
return 0;
}
Conclusão
- Use
std::stringpara a maioria do código C++ – é mais seguro e fácil. - Quando você deve trabalhar com arrays de caracteres brutos, as funções
cstringsão essenciais. - Sempre garanta que buffers de destino são grandes o suficiente para evitar overflows.
- Use
strlenapenas quando precisar do comprimento;std::string::size()é preferível para objetosstd::string. - Prefira
strcmppara APIs legadas;std::string::compare()ou ooperator==sobrecarregado dão semântica mais clara em C++ moderno.
Linguagem C
- Dominando Strings em Java: Criação, Métodos e Boas Práticas
- Dominando Representações String em Enums Java
- Variáveis e Tipos de Dados em C++: Guia Completo sobre int, double, char, string, bool
- Arrays em C++ Desmistificados: Declaração, Inicialização e Técnicas com Ponteiros
- Laço do-while em C++: Sintaxe, Exemplos Práticos e Loops Aninhados
- Dominando Ponteiros em C++: Conceitos, Exemplos e Aplicações Práticas
- Dominando o Tipo Char em C++: Declaração, ASCII e Técnicas de Conversão
- Sobrecarga de Operadores em C++: Guia Prático com Exemplos de Código
- Funções em C++ Explicadas com Exemplos Práticos de Código
- Strings em C Facilitadas: Declaração, Entrada, Saída e Funções da Biblioteca