Cómo leer el archivo Char por Char en C++

Jinku Hu 12 octubre 2023
  1. Usa el método ifstream y get para leer el archivo char por char
  2. Usar la función getc para leer el archivo char por char
  3. Usar la función fgetc para leer el archivo Char por Char
Cómo leer el archivo Char por Char en C++

Este artículo explicará varios métodos de cómo leer un archivo de texto char por char en C++.

Usa el método ifstream y get para leer el archivo char por char

La forma más común de tratar con la E/S de archivos a la manera de C++ es usar std::ifstream. Al principio, un objeto ifstream se inicializa con el argumento del nombre del archivo que necesita ser abierto. Fíjate que la declaración if verifica si la apertura de un archivo tuvo éxito. Luego, usamos la función incorporada get para recuperar el texto dentro del archivo char por char y push_back en el contenedor vector. Finalmente, damos salida a los elementos vectoriales a la consola para propósitos de demostración.

#include <fstream>
#include <iostream>
#include <vector>

using std::cerr;
using std::cout;
using std::endl;
using std::ifstream;
using std::string;
using std::vector;

int main() {
  string filename("input.txt");
  vector<char> bytes;
  char byte = 0;

  ifstream input_file(filename);
  if (!input_file.is_open()) {
    cerr << "Could not open the file - '" << filename << "'" << endl;
    return EXIT_FAILURE;
  }

  while (input_file.get(byte)) {
    bytes.push_back(byte);
  }
  for (const auto &i : bytes) {
    cout << i << "-";
  }
  cout << endl;
  input_file.close();

  return EXIT_SUCCESS;
}

Usar la función getc para leer el archivo char por char

Otro método para leer el archivo carácter por carácter es usar la función getc, que toma el flujo de FILE * como argumento y lee el siguiente carácter si está disponible. Luego, el flujo de archivos de entrada debe ser iterado hasta que el último char sea alcanzado, y eso se implementa con la función feof, comprobando si el final del archivo ha sido alcanzado. Tenga en cuenta que siempre se recomienda cerrar los flujos de archivos abiertos una vez que ya no se necesiten.

#include <fstream>
#include <iostream>
#include <vector>

using std::cerr;
using std::cout;
using std::endl;
using std::ifstream;
using std::string;
using std::vector;

int main() {
  string filename("input.txt");
  vector<char> bytes;

  FILE* input_file = fopen(filename.c_str(), "r");
  if (input_file == nullptr) {
    return EXIT_FAILURE;
  }

  unsigned char character = 0;
  while (!feof(input_file)) {
    character = getc(input_file);
    cout << character << "-";
  }
  cout << endl;
  fclose(input_file);

  return EXIT_SUCCESS;
}

Usar la función fgetc para leer el archivo Char por Char

fgetc es un método alternativo a la función anterior, que implementa exactamente la misma funcionalidad que getc. En este caso, el valor de retorno de fgetc se utiliza en la sentencia if ya que devuelve el EOF si se alcanza el final del flujo de archivos. Como se recomienda, antes de la salida del programa, cerramos el flujo con una llamada fclose.

#include <fstream>
#include <iostream>
#include <vector>

using std::cerr;
using std::cout;
using std::endl;
using std::ifstream;
using std::string;
using std::vector;

int main() {
  string filename("input.txt");
  vector<char> bytes;

  FILE* input_file = fopen(filename.c_str(), "r");
  if (input_file == nullptr) {
    return EXIT_FAILURE;
  }

  int c;
  while ((c = fgetc(input_file)) != EOF) {
    putchar(c);
    cout << "-";
  }
  cout << endl;
  fclose(input_file);

  return EXIT_SUCCESS;
}
Autor: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.

LinkedIn Facebook

Artículo relacionado - C++ File