Ver Mensaje Individual
  #1 (permalink)  
Antiguo 01/06/2012, 10:39
Avatar de ffaffy
ffaffy
 
Fecha de Ingreso: agosto-2010
Mensajes: 11
Antigüedad: 13 años, 8 meses
Puntos: 0
Pregunta Saltos de linea con fstream en C++

Buen Dia para todos....

Literalmente no se como %$&^$$%#$% hacer lo siguiente...

Quiero copiar una fichero a otro, con la condicion de que en la ultima linea no me coloque salto de linea o fin de linea es decir "\n" o "endl" , lo que tengo es:

supongamos que el archivo prueba.txt contiene:
123
456
789

Código C++:
Ver original
  1. //variables
  2. int valor;
  3.  
  4. //leo el archivo
  5. ifstream leer("prueba.txt", ios::in);
  6.  
  7. //prepara el archivo que copia
  8. ofstream copiar("copia.txt", ios::out);
  9.  
  10. while(!leer.eof()){ //Verifico si hay algo para leer
  11.   leer >> valor; //leo cada linea
  12.   copiar << valor<<endl; // copia la linea en copia.txt
  13. }

Al copiar si no pongo al final <<endl; se copia asi: 123456789
entonces por orden pongo <<endl; y me queda copiada asi:
y se entiende que queda algo asi, el <<endl; en TXT no se ve, claro esta
23 <<endl;
456 <<endl;
789 <<endl;

Pero aqui mi problema, no entiendo porque pero me pasa...cuando intento leer copia.txt y mostrar el contenido en pantalla, la ultima linea se repite y he determinado que se debe a que la ultima linea tiene un salto o fin de linea "\n" ó "endl"....repito no entiendo porque pero se imprime asi:

123
456
789
789

Entonces creo que la solucion seria un for interno no se, que coloque saltos o fin de linea hasta la penultima linea....pero no se como hacerlo dentro del while y con que criterio determine cuantas lineas tengo o cual es la penultima/ ultima linea.

espero me entiendan y me puedan ayudar estoy al borde de un colapso nervioso

GRACIAS