Arquivos em C++: do iniciante ao profissional em 20 minutos

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Arquivos em C++: do iniciante ao profissional em 20 minutos

\n\n

Imagine que seu programa é um excelente chef. Ele sabe cozinhar, mas todos os ingredientes precisam ser trazidos manualmente, e as receitas desaparecem após cada uso. Não parece muito bom, certo? É por isso que qualquer desenvolvedor que se preze deve saber trabalhar com arquivos e o sistema de arquivos. Em C++, isso não é apenas "possível" — é a base, sem a qual você, como programador, se sentirá inseguro.

\n\n

Hoje vamos abordar o trabalho com arquivos em C++ para que você não apenas copie o código, mas realmente entenda o que acontece nos bastidores. Sem palestras chatas, com exemplos vivos e dicas práticas. Vamos lá!

\n\n

Fluxos — a base do trabalho com arquivos em C++

\n\n

Em C++, o trabalho com arquivos é construído em torno de fluxos. Se você já conhece cout e cin, considere que metade do caminho está percorrida. Os fluxos de arquivo funcionam com o mesmo princípio, só que, em vez da tela ou do teclado, os dados são enviados para um arquivo ou carregados dele.

\n\n

Os principais jogadores em campo:

\n\n
    \n
  • ifstream — para leitura de arquivo (input file stream).
  • \n
  • ofstream — para escrita em arquivo (output file stream).
  • \n
  • fstream — fluxo universal para leitura e escrita.
  • \n
\n\n

Todas essas classes vivem no arquivo de cabeçalho <fstream>. Não esqueça de incluí-lo, senão o compilador ficará chateado com você.

\n\n

Como abrir um arquivo e não enlouquecer

\n\n

Abrir um arquivo em C++ é como abrir uma porta: você precisa saber para onde ir e por quê. Vamos ver um exemplo simples de abertura de arquivo para escrita:

\n\n
#include <iostream>\n#include <fstream>\n#include <string>\n\nint main() {\n    std::ofstream outFile("example.txt"); // Abre o arquivo para escrita\n    \n    if (outFile.is_open()) {\n        outFile << "Olá, arquivo!" << std::endl;\n        outFile << "Esta é a segunda linha." << std::endl;\n        outFile.close(); // Fecha o arquivo\n        std::cout << "Escrita realizada com sucesso!" << std::endl;\n    } else {\n        std::cerr << "Não foi possível abrir o arquivo!" << std::endl;\n    }\n    \n    return 0;\n}\n
\n\n

Observe: sempre verificamos se o arquivo foi aberto usando is_open(). Se o arquivo não existir, ofstream o criará automaticamente. E se não for possível (por exemplo, sem permissão de escrita), o programa não falhará, mas informará o erro.

\n\n

Modos de abertura: quando um só não basta

\n\n

Por padrão, ofstream sobrescreve o arquivo, e ifstream apenas lê. Mas e se você quiser adicionar dados ao final do arquivo? Ou abrir o arquivo para leitura e escrita simultaneamente? É aí que entram as flags de modo:

\n\n
    \n
  • std::ios::in — abrir para leitura.
  • \n
  • std::ios::out — abrir para escrita (padrão para ofstream).
  • \n
  • std::ios::app — anexar ao final do arquivo (append).
  • \n
  • std::ios::ate — mover o cursor para o final ao abrir.
  • \n
  • std::ios::binary — abrir em modo binário.
  • \n
\n\n

Exemplo de uso de modos:

\n\n
std::ofstream logFile("log.txt", std::ios::app); // Anexa ao final\nif (logFile.is_open()) {\n    logFile << "Nova entrada no log" << std::endl;\n    logFile.close();\n}\n
\n\n

E se precisar ler e escrever — use fstream com flags combinadas:

\n\n
std::fstream file("data.txt", std::ios::in | std::ios::out);\n
\n\n

Leitura de arquivo: por palavras e por linhas

\n\n

Ler de um arquivo em C++ é uma arte à parte. Pode-se ler por palavras, por linhas, por caracteres. A escolha depende da tarefa.

\n\n

Leitura por linhas (a maneira mais popular)

\n\n
#include <fstream>\n#include <iostream>\n#include <string>\n\nint main() {\n    std::                

Blogs

Book Recommendations