Вы находитесь на странице: 1из 4

4.

Ficheros De Texto Desde C++


El manejo de ficheros desde C++ puede llegar a ser casi tan sencillo como
el manejo de la entrada y salida estándar (pantalla y teclado), con la
diferencia de que abrimos el fichero (open) antes de trabajar con él y lo
cerramos (close) al terminar. Por ejemplo, para escribir una frase en un
fichero de texto (que se crearía automáticamente), podríamos usar un
fichero de salida (ofstream), así:

#include <iostream>
#include <fstream>
using namespace std;

int main () {

ofstream ficheroSalida;
ficheroSalida.open ("ficheroTexto.txt");
ficheroSalida << "Texto para el fichero";
ficheroSalida.close();

return 0;
}

Si lo que queremos es leer una línea de un fichero, sería muy similar, pero
usaríamos ifstream en vez de ofstream, y, si la línea que leemos puede
contener espacios (es lo habitual), usaremos getline en vez de >>, al igual
que hacíamos con la entrada desde teclado:

#include <iostream>
#include <fstream>
using namespace std;
int main () {

ifstream ficheroEntrada;
string frase;

ficheroEntrada.open ("ficheroTexto.txt");
getline(ficheroEntrada, frase);
ficheroEntrada.close();

cout << "Frase leida: " << frase << endl;

return 0;

Por supuesto, la situación da mucho más juego. Por ejemplo, no


necesariamente querremos sólo leer de un fichero, o sólo crearlo: podemos
querer añadir al final de un fichero que ya existe, o modificar cualquier
posición intermedia del fichero, o abrir un fichero de forma que podamos
tanto leer de él como escribir en él. Para esas cosas, en vez de
usar ofstream o ifstream usaremos un tipo de fichero más genérico,
el fstream, que nos permite indicar el modo de apertura (lectura o escritura,
texto o binario, etc), con los siguientes "flags" predefinidos:

ios::in Abrir para entrada (lectura)


ios::out Abrir para salida (escritura)
ios::binary Abre en modo binario
Escoge el final del fichero como posición inicial (si no se dice lo
ios::ate contrario, la posición inicial al abrir el fichero sería el comienzo del
fichero)
Abrir para añadir (append) al final, sólo utilizable si se ha abierto
ios::app
el fichero exclusivamente para escritura
ios::trunc Trunca el fichero si existía, borrando todo su contenido anterior

Estos flags se detallan después del nombre de fichero, y podemos indicar


varios de ellos a la vez, usando el operador OR a nivel de bits (|): abriríamos
para lectura y escritura con fichero.open("fichero.txt", ios::in | ios::out);

Para comprobar si se ha podido abrir (y no intentar leer de un fichero


inexistente) usaríamos "is_open":
if (fichero.is_open()) { ... }

También está la alternativa de comprobarlo "al estilo C", menos legible que
la anterior: si fichero es NULL, no estará abierto, luego para comprobar que
podemos leer de él, se podría hacer algo como "if (fichero != NULL) { ... }", o
aún más compacto, "if (fichero) { ... }"

Además lo habitual será no querer leer una línea, sino todo el contenido del
fichero, ya sean 200 líneas o ninguna. Para comprobar si se ha podido abrir
(y no intentar leer de un fichero inexistente) usaríamos "eof", que
típicamente usaremos dentro de un bloque repetitivo "while": while (!
fichero.eof() ) {...}:

Tenemos otras funciones útiles: "good" para ver si todo ha sido correcto,
"bad" para saber si ha habido algún problema (espacio insuficiente, sin
permiso de escritura, etc) o "fail", que es muy similar a "bad" pero incluye
también problemas de conversión de tipos (leer un carácter alfabético
cuando se esperaba un número, por ejemplo).

Así, un fuente que leyera cualquier fichero de texto indicado por el usuario y
lo mostrara en pantalla, avisando en caso de que el fichero no exista (o no
se pueda abrir), podría ser:

#include <iostream>
#include <fstream>

using namespace std;

int main () {
fstream ficheroEntrada;
string nombre;
string frase;

cout << "Dime el nombre del fichero: ";


getline(cin,nombre);

ficheroEntrada.open ( nombre.c_str() , ios::in);


if (ficheroEntrada.is_open()) {

while (! ficheroEntrada.eof() ) {
getline (ficheroEntrada,frase);
cout << "Leido: " << frase << endl;
}

ficheroEntrada.close();
}
else cout << "Fichero inexistente o faltan permisos para abrirlo" <<
endl;

return 0;
}

Вам также может понравиться

  • Bacterio
    Bacterio
    Документ3 страницы
    Bacterio
    Méndez Méndez Ryan Ander
    Оценок пока нет
  • La Contaminación
    La Contaminación
    Документ14 страниц
    La Contaminación
    Méndez Méndez Ryan Ander
    Оценок пока нет
  • La Histeria y Sus Componentes
    La Histeria y Sus Componentes
    Документ33 страницы
    La Histeria y Sus Componentes
    Méndez Méndez Ryan Ander
    Оценок пока нет
  • Informe de Seminario 2013
    Informe de Seminario 2013
    Документ91 страница
    Informe de Seminario 2013
    Méndez Méndez Ryan Ander
    Оценок пока нет
  • Oratoria
    Oratoria
    Документ14 страниц
    Oratoria
    Méndez Méndez Ryan Ander
    Оценок пока нет
  • Leyes de Newton
    Leyes de Newton
    Документ1 страница
    Leyes de Newton
    Méndez Méndez Ryan Ander
    Оценок пока нет
  • El Día Lunes 29 de Abril Se Cobrará 1Q en Adelante Si Lo Espera
    El Día Lunes 29 de Abril Se Cobrará 1Q en Adelante Si Lo Espera
    Документ1 страница
    El Día Lunes 29 de Abril Se Cobrará 1Q en Adelante Si Lo Espera
    Méndez Méndez Ryan Ander
    Оценок пока нет
  • Como Promover El Aprendizaje
    Como Promover El Aprendizaje
    Документ4 страницы
    Como Promover El Aprendizaje
    Méndez Méndez Ryan Ander
    Оценок пока нет
  • Disoluciones
    Disoluciones
    Документ2 страницы
    Disoluciones
    Méndez Méndez Ryan Ander
    Оценок пока нет
  • La Inteligencia
     La Inteligencia
    Документ7 страниц
    La Inteligencia
    Méndez Méndez Ryan Ander
    Оценок пока нет
  • Leyes de Newton
    Leyes de Newton
    Документ1 страница
    Leyes de Newton
    Méndez Méndez Ryan Ander
    Оценок пока нет
  • La Ciencia
    La Ciencia
    Документ4 страницы
    La Ciencia
    Méndez Méndez Ryan Ander
    Оценок пока нет
  • Diseño de Investigación A.
    Diseño de Investigación A.
    Документ6 страниц
    Diseño de Investigación A.
    Méndez Méndez Ryan Ander
    Оценок пока нет
  • Astronomia
    Astronomia
    Документ22 страницы
    Astronomia
    Méndez Méndez Ryan Ander
    Оценок пока нет
  • Astronomia
    Astronomia
    Документ22 страницы
    Astronomia
    Méndez Méndez Ryan Ander
    Оценок пока нет
  • Diario Doble Entra
    Diario Doble Entra
    Документ5 страниц
    Diario Doble Entra
    JosuéVentura
    Оценок пока нет
  • Di Así Se Hace
    Di Así Se Hace
    Документ2 страницы
    Di Así Se Hace
    Méndez Méndez Ryan Ander
    Оценок пока нет
  • La Segunda Guerra Mundial Fue Devastador
    La Segunda Guerra Mundial Fue Devastador
    Документ5 страниц
    La Segunda Guerra Mundial Fue Devastador
    Méndez Méndez Ryan Ander
    Оценок пока нет
  • Ramas de La Biología
    Ramas de La Biología
    Документ1 страница
    Ramas de La Biología
    Méndez Méndez Ryan Ander
    Оценок пока нет
  • Virus
    Virus
    Документ3 страницы
    Virus
    Méndez Méndez Ryan Ander
    Оценок пока нет
  • Gripe
    Gripe
    Документ2 страницы
    Gripe
    Méndez Méndez Ryan Ander
    Оценок пока нет
  • Computadora
    Computadora
    Документ2 страницы
    Computadora
    Méndez Méndez Ryan Ander
    Оценок пока нет
  • La Cultura Maya
    La Cultura Maya
    Документ1 страница
    La Cultura Maya
    Méndez Méndez Ryan Ander
    Оценок пока нет
  • Virus
    Virus
    Документ3 страницы
    Virus
    Méndez Méndez Ryan Ander
    Оценок пока нет
  • Historia de Guatemala
    Historia de Guatemala
    Документ2 страницы
    Historia de Guatemala
    Méndez Méndez Ryan Ander
    Оценок пока нет
  • Características de Los Seres Vivos
    Características de Los Seres Vivos
    Документ4 страницы
    Características de Los Seres Vivos
    Eugenio Martinez Jimenez
    Оценок пока нет
  • El Agua
    El Agua
    Документ6 страниц
    El Agua
    Méndez Méndez Ryan Ander
    Оценок пока нет
  • Tierra
    Tierra
    Документ5 страниц
    Tierra
    Méndez Méndez Ryan Ander
    Оценок пока нет
  • Medio Ambiente
    Medio Ambiente
    Документ6 страниц
    Medio Ambiente
    Méndez Méndez Ryan Ander
    Оценок пока нет
  • Manual - Comandos Básicos de Consola Sobre Equipamiento Ubiquiti - Ubiquiti Community
    Manual - Comandos Básicos de Consola Sobre Equipamiento Ubiquiti - Ubiquiti Community
    Документ4 страницы
    Manual - Comandos Básicos de Consola Sobre Equipamiento Ubiquiti - Ubiquiti Community
    ETONSHOP Emprende
    Оценок пока нет
  • Buses para Avionica
    Buses para Avionica
    Документ70 страниц
    Buses para Avionica
    Oscar Hermosa Garces
    Оценок пока нет
  • ARC Kubernetes
    ARC Kubernetes
    Документ121 страница
    ARC Kubernetes
    Javier Ramirez Delgado
    Оценок пока нет
  • Equipo Requerido - Software Labchart: Metodología
    Equipo Requerido - Software Labchart: Metodología
    Документ7 страниц
    Equipo Requerido - Software Labchart: Metodología
    carlitos
    Оценок пока нет
  • P Analisis Y Diseño de Sistemas: Universidad Cesar Vallejo Facultad de Ingenieria
    P Analisis Y Diseño de Sistemas: Universidad Cesar Vallejo Facultad de Ingenieria
    Документ12 страниц
    P Analisis Y Diseño de Sistemas: Universidad Cesar Vallejo Facultad de Ingenieria
    Cristofer Palacios
    Оценок пока нет
  • Motor Cummis
    Motor Cummis
    Документ2 страницы
    Motor Cummis
    Andres Anzola
    Оценок пока нет
  • Aplicaciones de BJT Como Interruptor
    Aplicaciones de BJT Como Interruptor
    Документ4 страницы
    Aplicaciones de BJT Como Interruptor
    limaroga
    100% (2)
  • Manual de Fallas en Fuentes de Poder para PC Linda
    Manual de Fallas en Fuentes de Poder para PC Linda
    Документ4 страницы
    Manual de Fallas en Fuentes de Poder para PC Linda
    Lindanny Jzv
    0% (1)
  • Convertidores Analogico A Digital
    Convertidores Analogico A Digital
    Документ11 страниц
    Convertidores Analogico A Digital
    Marco Rodrigo Ramirez Rojas
    Оценок пока нет
  • Practica3 LP II
    Practica3 LP II
    Документ23 страницы
    Practica3 LP II
    Brayan Gomez
    Оценок пока нет
  • 4 Informacion Expert
    4 Informacion Expert
    Документ3 страницы
    4 Informacion Expert
    Uriel Tijerino
    Оценок пока нет
  • Informe de Proyecto de Circuitos
    Informe de Proyecto de Circuitos
    Документ6 страниц
    Informe de Proyecto de Circuitos
    Bastian Arcial
    Оценок пока нет
  • TEA Boletin
    TEA Boletin
    Документ5 страниц
    TEA Boletin
    Cyntia Enriquez
    Оценок пока нет
  • Curso de Virus Con Asembler
    Curso de Virus Con Asembler
    Документ185 страниц
    Curso de Virus Con Asembler
    Mario Chombo
    Оценок пока нет
  • Contadores Sincronos y Asincronos
    Contadores Sincronos y Asincronos
    Документ3 страницы
    Contadores Sincronos y Asincronos
    Gustavo Pardo
    Оценок пока нет
  • Rodrigo Aburto S8 Tarea
    Rodrigo Aburto S8 Tarea
    Документ5 страниц
    Rodrigo Aburto S8 Tarea
    rodrigo alexis aburto pereira
    Оценок пока нет
  • Ingeniero Sistemas 26 Años Experiencia Técnico
    Ingeniero Sistemas 26 Años Experiencia Técnico
    Документ4 страницы
    Ingeniero Sistemas 26 Años Experiencia Técnico
    vmmejia
    Оценок пока нет
  • Comunicación de Paquetes y Comunicación de Circuitos
    Comunicación de Paquetes y Comunicación de Circuitos
    Документ7 страниц
    Comunicación de Paquetes y Comunicación de Circuitos
    nereagd96
    Оценок пока нет
  • M3 - Programación Básica (Python)
    M3 - Programación Básica (Python)
    Документ23 страницы
    M3 - Programación Básica (Python)
    aecornejog
    Оценок пока нет
  • Todo Resumen
    Todo Resumen
    Документ14 страниц
    Todo Resumen
    Amada Venadero
    Оценок пока нет
  • Lab N°1 AMPLIFICADORES DE AUDIO
    Lab N°1 AMPLIFICADORES DE AUDIO
    Документ2 страницы
    Lab N°1 AMPLIFICADORES DE AUDIO
    David
    Оценок пока нет
  • Protocolo Colaborativo Unidad 4 de Topicos Avanzados
    Protocolo Colaborativo Unidad 4 de Topicos Avanzados
    Документ5 страниц
    Protocolo Colaborativo Unidad 4 de Topicos Avanzados
    tatiana ramirez cassianis
    Оценок пока нет
  • Ge Nexus
    Ge Nexus
    Документ3 страницы
    Ge Nexus
    alba maestre
    Оценок пока нет
  • SDR Gnuradio Usrp
    SDR Gnuradio Usrp
    Документ12 страниц
    SDR Gnuradio Usrp
    Esteban Silva
    Оценок пока нет
  • Java
    Java
    Документ19 страниц
    Java
    Lucio Ticona Peñafiel
    Оценок пока нет
  • Windows 311 Recuerdo de SO
    Windows 311 Recuerdo de SO
    Документ2 страницы
    Windows 311 Recuerdo de SO
    Luke Skywalker
    Оценок пока нет
  • Arquitectura de La Microcomputadora Raspberry PI
    Arquitectura de La Microcomputadora Raspberry PI
    Документ10 страниц
    Arquitectura de La Microcomputadora Raspberry PI
    dany
    Оценок пока нет
  • Electronic A 1
    Electronic A 1
    Документ4 страницы
    Electronic A 1
    Andres Joel Guale Gonzalez
    Оценок пока нет
  • Monografia Cloud Computing
    Monografia Cloud Computing
    Документ10 страниц
    Monografia Cloud Computing
    Ciro Yupanqui Pumachapi
    Оценок пока нет
  • Instalación Oracle19c
    Instalación Oracle19c
    Документ10 страниц
    Instalación Oracle19c
    GUSTAVO FRANCO RUIZ NINA
    Оценок пока нет