0Pricing
C++ Academy · Aula

Leitura de arquivos com ifstream

Leia texto e dados

Leitura de arquivos com ifstream é 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.

O que é ifstream?

std::ifstream (fluxo de arquivo de entrada) lê dados de arquivos. Ele se comporta como std::cin, mas sua fonte é um arquivo no disco.

  • Definido em <fstream>.
  • Abre um arquivo pelo nome em seu construtor.
#include <iostream>
#include <fstream>

int main() {
    std::ofstream("demo.txt") << "hello\n";
    std::ifstream in("demo.txt");
    std::string word;
    in >> word;
    std::cout << word << '\n';
    return 0;
}

Abrindo um arquivo

Construa um ifstream com um nome de arquivo e depois verifique com is_open() se o arquivo foi encontrado.

#include <iostream>
#include <fstream>

int main() {
    std::ofstream("data.txt") << "42\n";
    std::ifstream in("data.txt");
    std::cout << (in.is_open() ? "opened" : "failed") << '\n';
    return 0;
}

Lendo palavras

O operador >> lê tokens separados por espaços em branco, assim como com cin.

#include <iostream>
#include <fstream>

int main() {
    std::ofstream("words.txt") << "alpha beta gamma\n";
    std::ifstream in("words.txt");
    std::string w;
    while (in >> w) std::cout << w << '\n';
    return 0;
}

Lendo números

Você pode extrair tipos numéricos diretamente. A extração do fluxo analisa o texto e o converte para o tipo correto.

#include <iostream>
#include <fstream>

int main() {
    std::ofstream("nums.txt") << "10 20 30\n";
    std::ifstream in("nums.txt");
    int sum = 0, x;
    while (in >> x) sum += x;
    std::cout << "sum = " << sum << '\n';
    return 0;
}

Lendo linhas com getline

Use std::getline() para ler uma linha inteira, incluindo os espaços, até a quebra de linha.

#include <iostream>
#include <fstream>
#include <string>

int main() {
    std::ofstream("lines.txt") << "first line\nsecond line\n";
    std::ifstream in("lines.txt");
    std::string line;
    while (std::getline(in, line)) std::cout << "[" << line << "]\n";
    return 0;
}

Lendo o arquivo inteiro

Para carregar um arquivo inteiro de uma só vez, leia-o em uma string usando iteradores do buffer do fluxo.

#include <iostream>
#include <fstream>
#include <sstream>

int main() {
    std::ofstream("all.txt") << "line1\nline2\n";
    std::ifstream in("all.txt");
    std::stringstream ss;
    ss << in.rdbuf();
    std::cout << ss.str();
    return 0;
}

Detectando o fim do arquivo

Um laço de leitura termina quando a extração falha, normalmente ao chegar ao fim do arquivo. Testar o fluxo em uma condição verifica essa situação.

#include <iostream>
#include <fstream>

int main() {
    std::ofstream("eof.txt") << "1 2 3\n";
    std::ifstream in("eof.txt");
    int x, count = 0;
    while (in >> x) ++count;
    std::cout << "read " << count << " numbers\n";
    std::cout << "eof: " << std::boolalpha << in.eof() << '\n';
    return 0;
}

Lidando com um arquivo ausente

Se o arquivo não existir, o fluxo ficará em um estado de falha e is_open() será falso. Sempre verifique antes de ler.

#include <iostream>
#include <fstream>

int main() {
    std::ifstream in("does_not_exist_12345.txt");
    if (!in) {
        std::cout << "could not open file\n";
    }
    return 0;
}

Analisando linhas estruturadas

Combine getline com istringstream para extrair campos de cada linha.

#include <iostream>
#include <fstream>
#include <sstream>
#include <string>

int main() {
    std::ofstream("people.txt") << "Alice 30\nBob 25\n";
    std::ifstream in("people.txt");
    std::string line;
    while (std::getline(in, line)) {
        std::istringstream ss(line);
        std::string name; int age;
        ss >> name >> age;
        std::cout << name << " is " << age << '\n';
    }
    return 0;
}

Abrir e fechar explicitamente

Você pode abrir mais tarde um fluxo construído por padrão com open() e liberá-lo com close().

#include <iostream>
#include <fstream>

int main() {
    std::ofstream("oc.txt") << "data\n";
    std::ifstream in;
    in.open("oc.txt");
    std::string s; in >> s;
    in.close();
    std::cout << s << '\n';
    return 0;
}

RAII fecha automaticamente

Quando um ifstream sai do escopo, seu destrutor fecha o arquivo automaticamente. O close() manual raramente é necessário.

#include <iostream>
#include <fstream>

int main() {
    std::ofstream("raii.txt") << "x\n";
    {
        std::ifstream in("raii.txt");
        std::string s; in >> s;
        std::cout << s << '\n';
    } // file closed here automatically
    std::cout << "closed\n";
    return 0;
}

Verificação rápida

Teste sua compreensão sobre a leitura de linhas.

Recapitulação

Você aprendeu que std::ifstream:

  • lê arquivos usando >> e std::getline
  • deve ser verificado com is_open() ou testando o fluxo
  • é fechado automaticamente por meio de RAII quando sai do escopo

Em seguida, você escreverá arquivos com ofstream.

Perguntas Frequentes

A aula “Leitura de arquivos com ifstream” é grátis?

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

Leia texto e dados 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 “Leitura de arquivos com ifstream”?

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. Leitura de arquivos com ifstream
  2. Escrita de arquivos com ofstream
  3. E/S de arquivos binários
  4. Tratamento de erros e estado
← Voltar para C++ Academy