[C con Clase] Leer fichero de texto con "formato".
Jorge Vega Sanchez
memmaker650 en gmail.com
Jue Mayo 6 13:43:45 CEST 2010
Vale muchas gracias, funciona perfecto.
On 06/05/2010, at 13:07, Steven Davidson wrote:
> Hola Jorge,
>
> 2010/5/6 Jorge Vega Sanchez <memmaker650 en gmail.com>
> A ver si lo explico bien. Tengo un par de programitas de prueba, en
> uno escribo texto en un fichero con saltos de linea. Todo funciona
> perfectamente.
> Ahora en el programa que debe leer el fichero y mostrarlo por
> pantalla no consigo que se representen los espacios y los saltos de
> linea.
>
> Esto es lo que tengo, a ver si me podeis ayudar porque ando que ya
> no sé que probar.
>
>
> Veamos el código fuente.
>
>
> #include <iostream>
> #include <fstream>
> //#include <stdio.h>
>
> using namespace std;
>
> int main(int argc, char *argv[])
> {
> /* Declaramos un array con suficiente tamaño para leer las líneas */
> char cadena[100];
> /* Fichero original, se abre para lectura pasando parámetros en la
> declaración de la variable */
> ifstream f;
> f.open("fichero2.txt", ifstream::in);
>
> /* Comprobar que se abierto correctamente */
> if (!f)
> {
> cout << "fallo" << endl;
> return -1;
> }
> /* Hacemos una primera lectura */
> while (!f.eof())
> {
> /* Leemos la siguiente línea */
> f >> cadena;
>
>
> Aquí está el problema. Estás leyendo la información con formato. La
> operación de extracción >> saltará los espacios blancos: ' ', '\t',
> '\n', '\r', '\f', y '\v'. Si quieres leer la información exactamente
> en el fichero, entonces usa 'read()'. Sin embargo, en tu caso,
> puedes usar 'getline()' sin muchos problemas. Por ejemplo,
>
> cin.getline( cadena, 100 );
>
>
> if(cadena=='\n')
>
>
> Esto es incorrecto. No puedes comparar una cadena con un carácter.
> Lo que realmente estás haciendo es comparar la dirección de memoria
> del primer carácter de la cadena con el código ASCII del carácter
> '\n'.
>
> De todas maneras, esta comparación ya no es necesaria.
>
> {
> cout << endl;
> }
> else
> {
> cout << cadena;
> }
> }
> cout << endl;
> f.close();
> return 0;
> }
>
>
> Espero haber aclarado las dudas.
>
> Steven
>
> _______________________________________________
> Lista de correo Cconclase Cconclase en listas.conclase.net
> http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
> Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20100506/6998c2b4/attachment-0001.html>
Más información sobre la lista de distribución Cconclase