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.
Saludos,
- Intenta utilizar std::endl en lugar de '\n':
escritura << referencia << endl;
- O también puede ser: '\r\n' ...
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!
- Pues estás mostrando cada línea leída una detrás de otra sin agregar el salto.
string texto;
while (!lectura.eof()){
getline(lectura, texto);
cout << texto; // Una detrás de otra
}
string texto;
while (!lectura.eof()){
getline(lectura, texto);
cout << texto << endl; // Corregido (endl o '\n' o '\r\n')
}
muchas gracias, gente!
todo perfecto ahora.