Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: gastongaston en 1 Octubre 2018, 13:54 pm



Título: Grabar salto de linea en un fichero.
Publicado por: gastongaston en 1 Octubre 2018, 13:54 pm
Hola!
Les quiero hacer una consulta de novato total:
estoy grabando en un fichero ciertos datos, y quiero que para cada uno, exista un salto de linea. Pero no puedo conseguirlo.
Mi intento para que funcione es el siguiente:

void ingresar(int referencia, Persona per) {
   ofstream escritura;
   escritura.open("agenda.txt", ios::app);
   if (escritura.fail()) {
      cout << "\nError al intentar abrir ESCRITURA\n";
   }

   escritura << referencia << '\n';
   escritura << per.getNombre() << '\n';
   escritura << per.getApellido() << '\n';
        escritura.close();
}


void leer() {
   ifstream lectura;
   lectura.open("agenda.txt", ios::in);
   if (lectura.fail()) {
      cout << "\nERROR EN LECtURA DE ARCHIVO\n";
   }

   string texto;
   while (!lectura.eof()){
      getline(lectura, texto);
      cout << texto;
   }
   lectura.close();
}

Graba "bien" pero todo junto, sin espacios.
Alguna idea?

Muchas gracias.


Título: Re: Grabar salto de linea en un fichero.
Publicado por: EdePC en 1 Octubre 2018, 15:37 pm
Saludos,

- Intenta utilizar std::endl en lugar de '\n':

Código
  1. escritura << referencia << endl;

- O también puede ser: '\r\n' ...


Título: Re: Grabar salto de linea en un fichero.
Publicado por: gastongaston en 1 Octubre 2018, 15:44 pm
Gracias por responder.

Lo que estoy observando es que cuando abro el archivo desde mi escritorio (agenda.txt), se graba linea por linea.
Pero cuando los quiero "leer" desde mi funcion leer(), me los muestra todos juntos.

Esto tiene sentido?
O deberia hacer algo más de lo que, por supuesto, no me estoy enterando?

Muchas gracias!


Título: Re: Grabar salto de linea en un fichero.
Publicado por: EdePC en 2 Octubre 2018, 04:36 am
- Pues estás mostrando cada línea leída una detrás de otra sin agregar el salto.

Código
  1.   string texto;
  2.   while (!lectura.eof()){
  3.      getline(lectura, texto);
  4.      cout << texto; // Una detrás de otra
  5.   }

Código
  1.   string texto;
  2.   while (!lectura.eof()){
  3.      getline(lectura, texto);
  4.      cout << texto << endl; // Corregido (endl o '\n' o '\r\n')
  5.   }


Título: Re: Grabar salto de linea en un fichero.
Publicado por: gastongaston en 3 Octubre 2018, 16:41 pm
muchas gracias, gente!

todo perfecto ahora.