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
>>estd::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
- Leitura de arquivos com ifstream
- Escrita de arquivos com ofstream
- E/S de arquivos binários
- Tratamento de erros e estado