C++ Strings Básico
std::string
std::string é a classe da biblioteca padrão do C++ para representar e manipular sequências de caracteres. Diferente de char[], ela gerencia a memória automaticamente, conhece seu próprio tamanho e oferece métodos prontos para busca, extração, concatenação e conversão.
As operações básicas incluem size(), empty(), append()/+, substr() e find(). substr(pos, n) devolve uma nova string com até n caracteres a partir de pos; find() retorna a posição da primeira ocorrência ou std::string::npos se não encontrar.
std::string_view (C++17) é uma visão leve e não proprietária de uma sequência de caracteres. Ela evita cópias ao passar strings para funções, mas exige cuidado: o dado original precisa continuar vivo enquanto a view for usada.
Para converter texto em número use std::stoi, std::stod, etc.; para o caminho inverso use std::to_string. Essas funções lançam exceções em caso de erro, então trate entradas inválidas.
Pontos-chave
std::stringgerencia memória automaticamente e oferecesize(),empty(),substr()efind().find()retornastd::string::nposquando o trecho não é encontrado.std::string_viewevita cópias, mas não é dona dos dados: a string original deve permanecer válida.std::stoi/std::stodconvertem texto em número e lançam exceção se a entrada for inválida.std::to_stringconverte valores numéricos emstd::string.
#include <iostream>
#include <string>
#include <string_view>
// string_view evita copiar a string ao apenas ler
void imprimir(std::string_view sv) {
std::cout << "view: " << sv << " (tam " << sv.size() << ")\n";
}
int main() {
std::string nome = "C++ Moderno";
// operações básicas
std::cout << "Tamanho: " << nome.size() << '\n';
nome += "!";
std::cout << "Depois de +=: " << nome << '\n';
// substr e find
auto pos = nome.find("Moderno");
if (pos != std::string::npos) {
std::string palavra = nome.substr(pos, 7);
std::cout << "Palavra: " << palavra << '\n';
}
// string_view (C++17)
imprimir(nome);
// conversões numéricas
int numero = std::stoi("42");
double pi = std::stod("3.14");
std::string texto = std::to_string(numero + 1);
std::cout << "numero+1 = " << texto << ", pi = " << pi << '\n';
}