Da trilha de C++ Este conceito ainda não saiu como card do dia. ir para o card de hoje

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::string gerencia memória automaticamente e oferece size(), empty(), substr() e find().
  • find() retorna std::string::npos quando o trecho não é encontrado.
  • std::string_view evita cópias, mas não é dona dos dados: a string original deve permanecer válida.
  • std::stoi/std::stod convertem texto em número e lançam exceção se a entrada for inválida.
  • std::to_string converte valores numéricos em std::string.
string_demo.cpp
#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';
}

Exercícios

  1. 1
    Fácil

    Extraindo o domínio de um e-mail

    Leia uma linha contendo um endereço de e-mail e imprima a parte após o caractere @.

    Resolver
  2. 2
    Médio

    Contando ocorrências de uma substring

    Leia uma linha de texto e uma palavra, e conte quantas vezes a palavra aparece no texto (sobreposições contam).

    Resolver
  3. 3
    Desafio

    Conversor seguro de string para número

    Leia uma linha e tente convertê-la para int. Se for válida, imprima o dobro; caso contrário, imprima invalido. Use std::stoi com tratamento de exceções.

    Resolver

Continue estudando