Título: Mejor clase para trabajar con archivos C++ Publicado por: Kaxperday 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!. Título: Re: Mejor clase para trabajar con archivos C++ Publicado por: Seyro97 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!
Título: Re: Mejor clase para trabajar con archivos C++ Publicado por: ivancea96 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? Título: Re: Mejor clase para trabajar con archivos C++ Publicado por: Kaxperday 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. Título: Re: Mejor clase para trabajar con archivos C++ Publicado por: ivancea96 en 13 Agosto 2015, 12:59 pm O puedes utilizar
Código
Título: Re: Mejor clase para trabajar con archivos C++ Publicado por: Kaxperday 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. Título: Re: Mejor clase para trabajar con archivos C++ Publicado por: ivancea96 en 14 Agosto 2015, 15:40 pm Código
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 Título: Re: Mejor clase para trabajar con archivos C++ Publicado por: Kaxperday 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 |