Documentos de Académico
Documentos de Profesional
Documentos de Cultura
#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();
return 0;
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>
int main () {
fstream ficheroEntrada;
string nombre;
string frase;
while (! ficheroEntrada.eof() ) {
getline (ficheroEntrada,frase);
cout << "Leido: " << frase << endl;
}
ficheroEntrada.close();
}
else cout << "Fichero inexistente o faltan permisos para abrirlo" <<
endl;
return 0;
}