2012-04-09 13 views
26

Tengo una funcionalidad de registro y en esto tengo los archivos de registro. Ahora, cada vez que ejecuto el programa, deseo que el archivo previamente escrito no se elimine y se agregue con los datos actuales (lo que haya en el archivo de registro)Adjuntar una nueva línea en un archivo (archivo de registro) en C++

Solo para aclarar, por ejemplo: Tengo un archivo de registro logging_20120409.log que mantiene la marca de tiempo diariamente. Supongamos que ejecuto mi proyecto, le escribe la marca de tiempo actual. Ahora si lo vuelvo a ejecutar, la marca de tiempo anterior se reemplaza con él. No quiero esta funcionalidad Quiero la marca de tiempo anterior junto con la marca de tiempo actual.

Por favor, ayudar a

+0

tiene que compartir su código en cuanto a donde se abre el archivo de registro y en el que se creó. – Vijay

+0

abrir el archivo en 'modo de agregar' –

Respuesta

47

Quiere abrir el archivo en el modo "anexar", por lo que no elimina el contenido anterior del archivo. Usted lo hace especificando ios_base::app al abrir el archivo:

std::ofstream log("logfile.txt", std::ios_base::app | std::ios_base::out); 

Por ejemplo, cada vez que ejecute esta dirección, añadiendo una línea más al archivo:

#include <ios> 
#include <fstream> 

int main(){ 
    std::ofstream log("logfile.txt", std::ios_base::app | std::ios_base::out); 

    log << "line\n"; 
    return 0; 
} 

Así, la primera vez lo ejecuta, se obtiene

line 

La segunda vez:

line 
line 

y así sucesivamente.

+0

puede ¿Qué es lo que hace? – gandhigcpp

1

tal vez usted tiene que abrir el archivo con la opción de agregación. de esta manera:

FILE * pFile; 
pFile = fopen ("myfile.txt","a"); 

o esto:

fstream filestr; 
filestr.open ("test.txt", fstream::app) 
+1

cómo por favor sugerir .. – gandhigcpp

+1

no estoy seguro de qué más puedo sugerir. ¿Cómo estás abriendo el archivo actualmente? – WeaselFox

+0

en caso de que tenga algo como: - file.open (logfileName.c_str()); y file es un objeto de ofstream. – gandhigcpp

3

usar algo como:

#include <fstream> 
#include <iostream> 
using namespace std; 
int main() { 
    ofstream out("try.txt", ios::app); 
    out << "Hello, world!\n"; 
    return 0; 
} 

el IOS: opción de aplicación hace que la salida de conseguir anexa al final del archivo en lugar de eliminar su contenido.

Cuestiones relacionadas