Grabar salto de linea en un fichero.

Iniciado por gastongaston, 1 Octubre 2018, 13:54 PM

0 Miembros y 1 Visitante están viendo este tema.

gastongaston

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.
Perdon por tan poco.

EdePC

Saludos,

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

Código (cpp) [Seleccionar]
escritura << referencia << endl;

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

gastongaston

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!
Perdon por tan poco.

EdePC

- Pues estás mostrando cada línea leída una detrás de otra sin agregar el salto.

Código (cpp) [Seleccionar]
   string texto;
   while (!lectura.eof()){
      getline(lectura, texto);
      cout << texto; // Una detrás de otra
   }


Código (cpp) [Seleccionar]
   string texto;
   while (!lectura.eof()){
      getline(lectura, texto);
      cout << texto << endl; // Corregido (endl o '\n' o '\r\n')
   }

gastongaston

muchas gracias, gente!

todo perfecto ahora.
Perdon por tan poco.