Ler e Escrever Arquivos Linha por Linha em C++

C++Beginner
Pratique Agora

Introdução

Neste laboratório, você aprenderá como ler e escrever um arquivo linha por linha usando a linguagem de programação C++. Você criará um arquivo, escreverá nele e, em seguida, lerá seu conteúdo uma linha de cada vez.

Criando e abrindo um arquivo

Crie um arquivo C++ chamado file_io.cpp no diretório ~/project. Nesta etapa, você criará e abrirá um arquivo chamado example.txt.

#include <fstream>

int main() {
    // Creating and opening a file
    std::ofstream ofs;
    ofs.open("example.txt", std::ofstream::out | std::ofstream::trunc);
    ofs.close();
    return 0;
}

Explicação:

  • ofstream é uma classe para escrever em arquivos.
  • ofs é um objeto da classe ofstream.
  • O método open() é usado para criar e abrir um arquivo.
  • No método open(), o primeiro argumento é o nome do arquivo a ser criado e o segundo argumento especifica o modo em que o arquivo deve ser aberto. Aqui, out especifica que o arquivo é aberto para escrita, e trunc especifica que o arquivo deve ser truncado se já existir.

Escrevendo em um arquivo

Nesta etapa, você escreverá no arquivo example.txt.

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

int main() {
    std::ofstream ofs;
    ofs.open("example.txt", std::ofstream::out | std::ofstream::trunc);
    if (ofs.is_open()) {
        std::cout << "Enter text to write to the file (Enter empty line to exit):" << std::endl;
        std::string line;
        do {
            std::getline(std::cin, line);
            if (line.length()) {
                ofs << line << std::endl;
            }
        } while (line.length());
        ofs.close();
    } else {
        std::cerr << "Error in opening the file" << std::endl;
    }
    return 0;
}

Explicação:

  • std::cout é usado para exibir uma mensagem no console pedindo ao usuário para inserir texto para escrever no arquivo.
  • std::getline() é usado para ler a entrada do usuário linha por linha e armazená-la na variável line.
  • if (line.length()) é usado para verificar se o usuário inseriu algum texto ou não. Se o usuário não inseriu nenhum texto, o loop será encerrado.
  • ofs << line << std::endl; é usado para escrever a entrada do usuário no arquivo, seguido por um caractere de nova linha.
  • std::cerr é usado para exibir uma mensagem de erro no console se o arquivo não puder ser aberto.

Para executar este programa, vá para o diretório ~/project e execute o seguinte comando:

g++ file_io.cpp -o file_io && ./file_io

Este programa solicitará ao usuário que insira texto para escrever no arquivo e, em seguida, escreverá a entrada do usuário no arquivo.

Lendo de um arquivo

Nesta etapa, você lerá o conteúdo do arquivo example.txt.

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

int main() {
    std::ifstream ifs;
    ifs.open("example.txt");
    if (ifs.is_open()) {
        std::cout << "Contents of the file:" << std::endl;
        std::string line;
        while (std::getline(ifs, line)) {
            std::cout << line << std::endl;
        }
        ifs.close();
    } else {
        std::cerr << "Error in opening the file" << std::endl;
    }
    return 0;
}

Explicação:

  • std::ifstream é uma classe para ler de arquivos.
  • ifs é um objeto da classe ifstream.
  • O método open() é usado para abrir um arquivo existente.
  • No método open(), o argumento é o nome do arquivo a ser aberto.
  • std::cout é usado para exibir uma mensagem no console para indicar que o conteúdo do arquivo está sendo exibido.
  • std::getline() é usado para ler o conteúdo do arquivo linha por linha e armazená-lo na variável line.
  • std::cout << line << std::endl; é usado para exibir o conteúdo do arquivo linha por linha no console.

Para executar este programa, vá para o diretório ~/project e execute o seguinte comando:

g++ file_io.cpp -o file_io && ./file_io

Este programa exibirá o conteúdo do arquivo example.txt no console.

Resumo

Neste laboratório, você aprendeu como criar, escrever e ler de um arquivo usando a linguagem de programação C++. Você aprendeu como usar as classes ofstream e ifstream para escrever e ler de arquivos, respectivamente. Você também aprendeu como usar o método open() para criar e abrir um arquivo, e o método getline() para ler o conteúdo de um arquivo linha por linha.