elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Estamos en la red social de Mastodon


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Mejor clase para trabajar con archivos C++
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Mejor clase para trabajar con archivos C++  (Leído 4,085 veces)
Kaxperday


Desconectado Desconectado

Mensajes: 702


The man in the Middle


Ver Perfil WWW
Mejor clase para trabajar con archivos C++
« en: 11 Agosto 2015, 22:04 pm »

Hola, necesito trabajar con ficheros para escribir y leer datos, hacer ambas cosas a la vez en una misma función vaya.

Tenía pensado usar FILE como hacía para C, pero sería una incoherencia debido a que estoy usando C++, y estaría dejando atrás los métodos que ofrecen sus funciones.

Mi pregunta es, que debo hacer ¿crear un ifstream para leerlo, liberarlo y crear luego un ofstream para escribir en el?. No creo que sea haga así.

¿No hay una clase, que maneje archivos con métodos de lectura y escritura? Es lo que busco.

Edito: Acabo de leer acerca de fstream, y creo que es lo que busco, lo inicializaría de esta manera:

Código:
fstream fs("test.txt", fstream::in | fstream::out);

Parece tener métodos de lectura y escritura, aun no lo he probado, ¿me lo recomendáis? ¿o hay algo mejor?.

La función debe de leer todo el archivo y luego sobrescribir unas líneas.

¡Saludos!.


En línea

Cuando el poder económico parasita al político ningún partido ni dictador podrá liberarnos de él. Se reserva el 99% ese poder.
Seyro97

Desconectado Desconectado

Mensajes: 145


Ver Perfil WWW
Re: Mejor clase para trabajar con archivos C++
« Respuesta #1 en: 12 Agosto 2015, 21:10 pm »

Personalmente siempre he usado el método de C (La de la estructura FILE). Para mí es una manera muy sencilla de trabajar y nunca he tenido problemas usándolo. Por eso mismo, a riesgo de que sea peor (cosa que dudo), te recomiendo que sigas usando la estructura FILE. Si opinan lo contrario, no duden en argumentar!


En línea

Carlos Peláez González. visita http://www.taringa.net/EnjoyC para muchos tutoriales!
ivancea96


Desconectado Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
Re: Mejor clase para trabajar con archivos C++
« Respuesta #2 en: 12 Agosto 2015, 22:33 pm »

Personalmente siempre he usado el método de C (La de la estructura FILE). Para mí es una manera muy sencilla de trabajar y nunca he tenido problemas usándolo. Por eso mismo, a riesgo de que sea peor (cosa que dudo), te recomiendo que sigas usando la estructura FILE. Si opinan lo contrario, no duden en argumentar!

fstream es mejor para C++, por varias razones: para empezar, tiene la misma funcionalidad que FILE, pero más simple. Es una clase, que hereda de istream/ostream, con lo que puedes utilizar herencia.

Realmrnte son suficientes razones para usarlo si programas C++. Argumentos basados en costumbres de C, no sirven.
No conozco razón que haga fstream, ifstream u ofstream peores que FILE. ¿Conoces alguna?
En línea

Kaxperday


Desconectado Desconectado

Mensajes: 702


The man in the Middle


Ver Perfil WWW
Re: Mejor clase para trabajar con archivos C++
« Respuesta #3 en: 13 Agosto 2015, 00:12 am »

Hola, la verdad siempre trabaje muy bien con FILE, pero eso quedo en C, además al compilar en C++ con file dice que no es muy seguro, salta una alerta y hay que añadir una directiva al preprocesador.

Dicho esto, estoy usando fstream y la verdad va muy bien, el único problema que tengo es como saber si el archivo existe o no, podría hacer fopen(archivo, "rt"), pero preferiría usar un método de fstream, pero al parecer no tiene.

¿A alguien se le ocurre que puedo hacer?, estoy probando con fstream.is_open(), es lo más parecido que hay, pero parece no funcionar.

Saludos.
En línea

Cuando el poder económico parasita al político ningún partido ni dictador podrá liberarnos de él. Se reserva el 99% ese poder.
ivancea96


Desconectado Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
Re: Mejor clase para trabajar con archivos C++
« Respuesta #4 en: 13 Agosto 2015, 12:59 pm »

O puedes utilizar
Código
  1. if(file.fail()) // error
En línea

Kaxperday


Desconectado Desconectado

Mensajes: 702


The man in the Middle


Ver Perfil WWW
Re: Mejor clase para trabajar con archivos C++
« Respuesta #5 en: 14 Agosto 2015, 15:22 pm »

Buenas socio, he probado con archivo.open() si devuelve false es que no lo pudo abrir, aunque quizás si exista, con fail() pasará lo mismo, o realmente dirá si existe o no? Me pregunto, gracias. De todas formas lo probare.

Saludos.
En línea

Cuando el poder económico parasita al político ningún partido ni dictador podrá liberarnos de él. Se reserva el 99% ese poder.
ivancea96


Desconectado Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
Re: Mejor clase para trabajar con archivos C++
« Respuesta #6 en: 14 Agosto 2015, 15:40 pm »

Código
  1. #include <iostream>
  2. #include <fstream>
  3.  
  4. using namespace std;
  5.  
  6. int main(){
  7.    ifstream a("inexistent.txt");
  8.    cout << "fail " << a.fail() << endl;
  9.    cout << "good " << a.good() << endl;
  10.    cout << "is_open " << a.is_open() << endl;
  11.    cout << "operator bool " << (bool)a << endl;
  12. }

Y la salida es la esperada:

Citar
fail 1
good 0
is_open 0
operator bool 0

En caso de que exista:
Citar
fail 0
good 1
is_open 1
operator bool 1
En línea

Kaxperday


Desconectado Desconectado

Mensajes: 702


The man in the Middle


Ver Perfil WWW
Re: Mejor clase para trabajar con archivos C++
« Respuesta #7 en: 14 Agosto 2015, 16:26 pm »

Okay gracias, está bastante aclarado. Supongo que solo comprueba si existe no hace nada de abrirlo o así, así que despues de la llamada a esa función en el caso de que sí exista no se encontrará abierto no?, de todas formas si llamo a close() tampoco habrá problemas, pero no creo que sea necesario.

Saludos  ;D
En línea

Cuando el poder económico parasita al político ningún partido ni dictador podrá liberarnos de él. Se reserva el 99% ese poder.
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Microsoft es elegida la mejor empresa para trabajar del mundo
Noticias
wolfbcn 2 2,555 Último mensaje 1 Noviembre 2011, 09:56 am
por crazykenny
¿Hay un mejor entorno que el Workbench para trabajar con MySQL?
Bases de Datos
Aikanáro Anário 0 2,587 Último mensaje 1 Abril 2012, 00:43 am
por Aikanáro Anário
cual es la mejor clase de java para trabajar con archivos
Java
jhonatanAsm 9 6,640 Último mensaje 17 Mayo 2012, 04:10 am
por RyogiShiki
Clase para Escribir en Archivos
Java
Nasty35 0 1,595 Último mensaje 4 Octubre 2012, 21:13 pm
por Nasty35
Plantilla para trabajar con archivos en lenguaje C. « 1 2 »
Programación C/C++
NOB2014 10 5,235 Último mensaje 29 Abril 2017, 18:14 pm
por NOB2014
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines