0Pricing
C++ Academy · Aula

Leitura segura de entradas com getline

Use std::getline para ler linhas e valide a entrada do utilizador antes de a utilizar

Leitura segura de entradas com getline é uma aula grátis de C++ Academy no CoddyKit. Esta é a aula 3 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.

Por que a entrada segura é importante

A entrada do usuário é a fonte mais comum de falhas. Um tipo incorreto, uma linha vazia ou caracteres inesperados podem interromper um programa ingênuo. A leitura defensiva é essencial.

Noções básicas de std::getline

std::getline(stream, line) lê caracteres até a próxima quebra de linha. A quebra de linha é consumida, mas não é armazenada.

std::string line;
std::getline(std::cin, line);

Delimitadores personalizados

Passe um terceiro argumento para parar em qualquer caractere — não apenas em uma quebra de linha.

std::string field;
std::getline(std::cin, field, ',');

Validando a entrada numérica

Leia a linha inteira primeiro e depois faça a análise. Isso evita o estado de falha de cin quando a entrada está malformada.

std::string line;
int n;
if (std::getline(std::cin, line)) {
    try {
        n = std::stoi(line);
    } catch (...) {
        std::cout << "Invalid number\n";
    }
}

Repetindo até obter um valor válido

Combine getline com try/catch para continuar solicitando a entrada até que o usuário forneça um valor válido.

int age;
while (true) {
    std::cout << "Age: ";
    std::string line;
    std::getline(std::cin, line);
    try {
        age = std::stoi(line);
        if (age >= 0 && age < 150) break;
    } catch (...) {}
    std::cout << "Try again.\n";
}

Detectando EOF em getline

getline coloca o fluxo em estado de falha ao encontrar EOF. Verifique o fluxo após a chamada.

std::string line;
while (std::getline(std::cin, line)) {
    process(line);
}

Removendo espaços em branco

Os usuários costumam adicionar espaços indesejados. Remova os espaços das duas extremidades após a leitura.

void trim(std::string& s) {
    size_t start = s.find_first_not_of(" \t\r\n");
    size_t end   = s.find_last_not_of(" \t\r\n");
    s = (start == std::string::npos) ? "" : s.substr(start, end - start + 1);
}

Limpando o fluxo

Se combinar >> e getline, limpe primeiro os caracteres restantes.

std::cin.clear();
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');

Lendo vários valores por linha

Leia a linha inteira, passe-a para um stringstream e faça a extração.

std::string line;
std::getline(std::cin, line);
std::istringstream iss(line);
int a, b, c;
iss >> a >> b >> c;

Defesa contra comprimento máximo

Rejeite entradas longas demais antecipadamente para evitar o esgotamento não intencional de recursos.

std::string line;
if (std::getline(std::cin, line) && line.size() > 1024) {
    std::cout << "Input too long.\n";
    return 1;
}

Lendo senhas ou entradas ocultas

A biblioteca padrão não oculta a entrada exibida. Use APIs da plataforma, como termios no Unix ou SetConsoleMode no Windows, para solicitações de senha.

Verificação rápida

Por que é mais seguro ler com getline e depois analisar, em vez de usar std::cin >> n?

Recapitulação

Leia a entrada do usuário com std::getline, valide ou analise separadamente e remova os espaços em branco. Envolva a análise em try/catch e repita até obter um valor válido. Limpe o fluxo ao combinar extração e leitura de linhas.

Perguntas Frequentes

A aula “Leitura segura de entradas com getline” é grátis?

Sim — o texto completo de “Leitura segura de entradas com getline” é 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 “Leitura segura de entradas com getline”?

Use std::getline para ler linhas e valide a entrada do utilizador antes de a utilizar 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 3 de 4.

Quanto tempo leva a aula “Leitura segura de entradas com getline”?

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. Usando std::cin e std::cout corretamente
  2. Formatando a saída com iomanip
  3. Leitura segura de entradas com getline
  4. Trabalhar com std::cerr e std::clog
← Voltar para C++ Academy