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//variables
int valor; 
 
//leo el archivo
ifstream leer("prueba.txt", ios::in);
 
//prepara el archivo que copia
ofstream copiar("copia.txt", ios::out);
 
while(!leer.eof()){ //Verifico si hay algo para leer
  leer >> valor; //leo cada linea
  copiar << valor<<endl; // copia la linea en copia.txt
}
  
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